我有一个扩展同一个超类的类列表,它有一个名为foo的静态字段:
List<Class<? extends SuperClass>> list;
如何在该列表的元素上访问foo?
答案 0 :(得分:4)
为什么要
Superclass.foo
不行吗?由于它是静态的,因此List
完全无关紧要。还有子类,因为该字段在Superclass
中只存在一次。
答案 1 :(得分:3)
您可以通过类名访问超类上的静态字段foo:
SuperClass.foo
静态字段在所有实例和所有子类中都有一个值。
答案 2 :(得分:1)
班级名称及其静态成员:
SuperClass.foo
答案 3 :(得分:0)
我认为这里的问题是你试图在类上调用静态方法,而不是在属于SuperClass的子类上。
假设你有一个Class Foo,它有一个返回String的静态方法栏。你可以这样做:
String test = Foo.bar();
但你不能这样做:
String test = Foo.class.bar();
你的例子中的内容更像是:
Class<? extends SuperClass> classz = Foo.class;
String test = classz.bar(); // same as Foo.class.bar();
解决方案:此时您应该可以使用反射来调用方法:
String test = (String) Foo.class.getMethod("bar").invoke(null);
答案 4 :(得分:-1)
你可以使foo受到保护,这样你就可以在子类中访问它。