在Java class关键字工作(Working with the class keyword in

2019-08-01 16:41发布

我真的不知道该怎么class的关键字在某些情况下工作。

例如, get(ClientResponse.class)方法将ClientResponse.class 。 它是如何使用时,它得到它,什么都超过刚好路过它的实例的优势是什么?

Answer 1:

SomeClass.class

返回Java类对象。 类是泛型化,所以SomeClass.class的实际类型将是Class<SomeType>

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



Answer 2:

ClientResponse.classclass不是关键字,无论是在类中的静态字段ClientResponse

关键字是我们使用Java中定义一个类中的一个。 例如

public class MyClass { } /* class used here is one of the keywords in Java */

classClientResponse.class是一种短切到的实例Class<T>代表类ClientResponse

还有另一种方式来获得该实例在您需要的实例ClientResponse 。 例如

ClientResponse obj = new ClientResponse();
Class clazz = obj.getClass(); 

什么是优势正好路过它的一个实例?

在上面的例子中,你可以看到会发生什么事情的情况下, obj为空(一个NPE)。 然后,就没有办法的方法来获取参考Class的实例ClientResponse



Answer 3:

非常最重要的事实是 - 你不需要有一个实例调用该方法。 当你不能因为某种原因实例化一个类,例如,它是抽象的,或只有私有构造函数,或者只能通过一些框架内正确实例,如Spring或JSF这是一个在严格的情况下非常有用。

然后,您可以拨打get获得所需类型的对象,甚至不知道它从何而来,以及如何获得创建的。



Answer 4:

Class的类,它是从不同的class关键字,是元数据描述实例。 它告诉你的方法,数据成员,构造函数和其他功能您可以通过调用创建实例的new

例如得到(ClientResponse.class)方法采用ClientResponse.class它是如何使用这个时,它得到它又有哪些优势正好路过它的一个实例?

你不能传递的一个实例ClientResponse此方法; 该公司预计,元数据有关的所有实例ClientResponse 。 如果你通过一个实例,你所期望的方法可能改变实例的状态。 但是,通过对所有实例的元数据可以允许方法来创建一个新的实例(如动态代理),或者做别的事情依赖于元数据有关的所有实例ClientResponse 。 看到不同?



Answer 5:

一类是对象的“蓝图”。 该实例是一个对象。

如果我们有

public class SomeClass {
   int a;
   SomeClass(int a) {
      this.a = a
   }
}

我们可以有这个类的一个实例

SomeClass c = new SomeClass(10);

c是类的一个实例。 它有一个整数a具有值10

对象SomeClass.class表示Class

这里SomeClass.class是一个object的类型的Class ,其具有的信息SomeClass

  1. 有一个具体的类
  2. 一个构造函数
  3. 整数成员变量

    及其它更多其他metadata对类SomeClass 。 需要注意的是它没有一个值a

您应该使用get(c)柜面你打算做一些有instancec如呼叫ca或其它有用的功能manupulate /获取实例的数据。

你应该用get(SomeClass.class)当GET返回基于事实的说法是某种类型的类的东西。 例如,如果这是在一个方法Registry具有地图它检索一类implementation class基于类型传入类。



Answer 6:

这里ClientResponse.class是的实例Class<ClientResponse> 一般Class对象表示的对象的类型。 当您创建新实例:

Object obj = new ClientResponse()

您可以通过调用检索该对象的类(类型):

obj.getClass()

那么,为什么你会传递Class对象周围? 这是不常见的,但其中一个原因是为了让一些方法创建一个给定的类的实例的任意数目:

ClientResponse resp = ClientResponse.newInstance();


Answer 7:

有很多方法可以使用的类对象。 这是用于思考。 下面是一个链接,可以帮助您了解更多。

http://docs.oracle.com/javase/tutorial/reflect/class/classNew.html



Answer 8:

每当我们编译任何Java文件,编译器将嵌入publicstaticfinal命名的字段class的类型, java.lang.Class ,在发出的字节码。 由于该领域是publicstatic ,我们可以用点号与类名一起访问它在你的情况下,它是ClientResponse.class



文章来源: Working with the class keyword in Java
标签: java class