Bonjour,
je suis tombé sur un petit problème de design aujourd'hui, j'en ai donc fait un petit exemple très simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Generale { public static void test() { System.out.println("test 1"); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Ajout extends Generale { public static <T extends Generale> void petitTest() { T.test(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Besoin1 extends Ajout { public static void test() { System.out.println("Besoin 1"); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Besoin2 extends Ajout { public static void test() { System.out.println("Besoin 2"); } }Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Main { public static void main(String[] args) { Besoin1.petitTest(); Besoin2.petitTest(); } }
run:
test 1
test 1
Je pense bien comprendre que çà vienne du fait que je travail sur des méthodes statiques.
Mais j'ai 3 questions : pourquoi çà fait pas ce que je veux (à savoir : afficher les messages de Besoin1 et 2) ? pourquoi çà génère pas d'erreur de compilation ? comment contourner le problème (sachant que je ne peut pas du tout toucher au code de la classe Generale) ?
Merci d'avance.
Partager