这是我的超类Animal
class Animal
{
//Empty
}
我的子类Tiger
class Tiger extends Animal
{
public static void TigerPrint()
{ -------
System.out.println("Tiger");
}
public void Run()
{
System.out.println("Tiger Running");
}
}
现在我做,
Animal a=new Tiger();
在编译时 a
将是一个Animal
.在运行时它将是Tiger
.
所以我做了
a.getClass().getMethod("TigerPrint").invoke(null);//WORKS
a.getClass().getMethod("Run").invoke(null);//NOT WORKING (NullPointerException)
我怎样才能调用通过反射的Run
方法。subclass
是的,我可以
((Tiger)a).Run();
但我怎么能在反思中做到这一点!