Le persone dicono che è impossibile, e questo è tipo di true, ma se si utilizza l'API di riflessione è possibile fare qualcosa di simile.
Ecco come si potrebbe fare.
Hai una classe che fa questo.
public class B {
Class a
public static Class getA(){
return a;
}
}
poi per chiamare bla fare:
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
}
Allora, perché si vuole fare questo? Bene, se lo fai in questo modo puoi cambiare la classe A a So getA() potrebbe restituire A, B, C o D, il tutto con diverse funzioni blah(). Non sono veramente sicuro di quale scopo servirebbe, ma se vuoi farlo, puoi farlo.
vedere: Class.getDeclaredMethod() e Method.invoke() per ulteriori informazioni.
Non ho provato questo, quindi potrebbe essere necessario apportare qualche ritocco.
fonte
2009-12-19 13:20:03
o leggi http://gbracha.blogspot.com/2008/02/cutting-out-static.html o impara C e usa i puntatori di funzione. –
Non è una risposta in quanto tale ma ... Scala usa oggetti singleton al posto di metodi statici (che in realtà non sono molto orientati agli oggetti). Se dovessi usare Scala, allora * potresti * fare questo genere di cose –