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");
    }
}
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();
    }
}
Résultat :

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.