在Java中调用参数化类的静态方法

时间:2012-02-14 22:15:19

标签: java class static member

我有一个扩展同一个超类的类列表,它有一个名为foo的静态字段:

List<Class<? extends SuperClass>> list;

如何在该列表的元素上访问foo?

5 个答案:

答案 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受到保护,这样你就可以在子类中访问它。