在这个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)
这样的东西,但是它的使用方式让我很困惑。澄清非常感谢
答案 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),那么它将调用任何扩展类的对象的实例。