在Java中使用class关键字

Mar*_*nis 11 java class

我真的不明白class关键字在某些情况下是如何工作的.

例如,该get(ClientResponse.class)方法采用 ClientResponse.class.当它获得它时它如何使用它,并且仅仅传递它的实例有什么优势?

smc*_*mcg 10

SomeClass.class
Run Code Online (Sandbox Code Playgroud)

返回Java Class对象.类是通用的,因此SomeClass.class的实际类型将是Class<SomeType>.

这个对象有很多用途,您可以在这里阅读Javadoc:http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html

  • +1为文档参考.然而,运行时的实际类型是普通的java/lang/Class,并且由于java泛型实现(类型擦除),它的泛型类型参数不会被保留. (2认同)

Bhe*_*ung 6

In ClientResponse.class,class不是关键字,也不是类中的静态字段ClientResponse.

关键字是我们用来在Java中定义类的关键字.例如

public class MyClass { } /* class used here is one of the keywords in Java */
Run Code Online (Sandbox Code Playgroud)

classClientResponse.class是一个捷径,以实例Class<T>表示类ClientResponse.

还有另一种方法可以访问您需要实例的实例ClientResponse.例如

ClientResponse obj = new ClientResponse();
Class clazz = obj.getClass(); 
Run Code Online (Sandbox Code Playgroud)

只是传递一个实例的优势是什么?

在上面的例子中,您可以看到在objnull(NPE)的情况下会发生什么.然后,该方法无法获取对Class实例的引用ClientResponse.