java.lang.Class和泛型

时间:2013-06-27 19:27:00

标签: java gwt

在这个gwt javadoc页面上http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/GWT.html java.lang.Class<?>作为参数传递给create function。这有什么用?我能理解像create(List<Class> classLiteral)create(java.lang.Class classLiteral)这样的东西,但是它的使用方式让我很困惑。澄清非常感谢

2 个答案:

答案 0 :(得分:4)

java.lang.Class<?>是实例的完整类型声明。它相当于

import java.lang.Class;

...

static <T> T create(Class<?> classLiteral) ...

他们只是在javadoc中彻底。 java.lang.Class是一个表示类的java类。你可以阅读它的javadoc here

您可以使用

访问类的Class对象
YourClass.class // where class is a reserved java keyword will return an instance of type Class<YourClass>

如果您有实例

YourClass yourInstance = ...
yourInstance.getClass(); // will return an instance of type Class<YourClass>

如果<?>让您感到困惑,则称为通配符。您可以阅读更多相关信息here

答案 1 :(得分:2)

在这种情况下,该方法调用类文字,而不是类的实例。这意味着您将实际的类传递给方法而不是类的实例。

这方面的一个例子是你打电话:

创建(MyClass.class);

这里,您传递的是Class对象,而不是MyClass的实例。因此,create方法要求一个Class对象,而不是你传入它的Class的实例。

如果它是类(java.lang.Class classLiteral),那么它将调用任何扩展类的对象的实例。