我想将一个类对象存储在局部变量中,然后调用其静态方法。另外,类对象应具有后代类型:
class Ancestor {
static void staticMethod() {
}
}
class Descendent extends Ancestor {
}
(...)
Class<? extends Ancestor> fool = Descendent.class;
fool.staticMethod() //compilation error 'cannot resolve symbol'
你们将如何解决呢?
您的问题中有多个错误,但是我给您的答案是什么。首先请注意,您使用的是默认可见性包。因此,该方法只能由同一包中的类看到。
您提供的以下代码段无效:
Class<Ancestor> fool = Descendent.class;
有效版本为:
Class<? extends Ancestor> fool = Descendant.class;
与静态方法调用有关。您不能仅使用类对象来调用类的静态方法。可以通过反射来调用该方法。看起来可能如下所示:
fool.getDeclaredMethod("staticMethod").invoke(null);
在这种情况下,有两种特殊的行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句