Les gens disent qu'il est impossible, et c'est genre de vrai, mais si vous utilisez l'API de réflexion que vous pouvez faire quelque chose proche de cela.
Voici comment vous pouvez le faire.
Vous avez une classe qui fait cela.
public class B {
Class a
public static Class getA(){
return a;
}
}
puis d'appeler bla-vous:
try{
Method m = B.getA().getDeclaredMethod("blah");
m.invoke(null);//for a static method, you can invoke on null
}
Catch(Exception e){
// see documentation for list of exceptions
}
Alors, pourquoi voudriez-vous faire? Eh bien, si vous le faites de cette façon, vous pouvez changer la classe A à So getA() pourrait renvoyer A, B, C ou D, tous avec différentes fonctions blah(). Je ne suis pas vraiment sûr de ce que cela servirait, mais si vous voulez le faire, vous pouvez le faire.
voir: Class.getDeclaredMethod() et Method.invoke() pour plus d'informations.
Je n'ai pas essayé cela, donc vous devrez peut-être faire quelques ajustements.
soit lire http://gbracha.blogspot.com/2008/02/cutting-out-static.html ou apprendre C et utiliser des pointeurs de fonction. –
Pas une réponse en tant que telle mais ... Scala utilise des objets singleton à la place des méthodes statiques (qui ne sont pas vraiment orientées objet). Si vous deviez utiliser Scala, vous pourriez très bien * faire * ce genre de chose. –