La gente dice que es imposible, y eso es tipo de cierto, pero si utiliza la API de reflexión puede hacer algo parecido.
Así es como podría hacerlo.
Tienes una clase que hace esto.
public class B {
Class a
public static Class getA(){
return a;
}
}
entonces para llamar bla haces:
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
}
Así que, ¿por qué quieres hacer esto? Bueno, si lo haces de esta manera, puedes cambiar la clase A en So getA() podría devolver A, B, C o D, todos con diferentes funciones blah(). No estoy seguro de qué propósito serviría, pero si quieres hacerlo, puedes.
ver: Class.getDeclaredMethod() y Method.invoke() para obtener más información.
No he probado esto, por lo que es posible que deba hacer algunos ajustes.
o lea http://gbracha.blogspot.com/2008/02/cutting-out-static.html o conozca C y utilice los punteros a las funciones. –
No es una respuesta como tal, pero ... Scala usa objetos únicos en lugar de métodos estáticos (que en realidad no están muy orientados a objetos). Si tuviera que usar Scala, entonces * podría * hacer * este tipo de cosas –