Люди говорят, что это невозможно, и это своего рода правда, но если вы используете API отражения, вы можете сделать что-то похожее на это.
Вот как ты мог это сделать.
У вас есть класс, который делает это.
public class B {
Class a
public static Class getA(){
return a;
}
}
тогда, чтобы позвонить бла, вы делаете:
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
}
Итак, почему вы хотите это сделать? Что ж, если вы сделаете это таким образом, вы можете изменить класс A на So, так что getA () может вернуть A, B, C или D, все с различными функциями blah (). Я не совсем уверен, какой цели это послужит, но если вы хотите это сделать, вы можете.
см:
Class.getDeclaredMethod () и Method.invoke () для получения дополнительной информации.
Я не пробовал этого, так что вам, возможно, придется внести некоторые изменения.