getClass()返回什么作为参考?

时间:2017-04-23 14:16:16

标签: java

我在论坛中搜索过,我理解getClass()会返回一个参考 但它是一个特殊的引用,每次调用getClass都会返回给定类的完全相同的引用。这意味着我们可以使用“==”而不是“equals”来比较它们。

我想知道每次创建和返回此特殊引用以及每次返回的方式

3 个答案:

答案 0 :(得分:1)

每个类的Class对象是一个单例。这意味着它的编写方式是每个类只存在一个Class对象。

答案 1 :(得分:0)

  1. getClass()方法返回对象的运行时类。
  2. 返回的Class对象是由所表示的类的静态同步方法锁定的对象。

答案 2 :(得分:0)

A.R。,我怀疑您将Class对象与该类对象的实例混淆。它们不一样。

每种Java类型只有一个Class对象。 getClass返回对该Class对象的引用。因为只有一个这样的对象,所有对它的引用都是相同的,==有效。第一次使用时ClassLoader加载类对象。没有人必须“创建”它的引用。它坐在那里,在记忆中,可以参考。正如@JoeC指出的那样,它是一个单身人士。 BAM!

给定类可能有许多实例。每个独立实例都有自己的状态,不与任何其他实例共享。作为其状态的一部分,每个实例具有的一个事物是对其Class的引用。当然,该引用与该类的每个其他实例中的引用相同。它们是==

已编辑添加:了解Class个对象本身就是Class<?>类型的实例可能会有所帮助。可能有很多String但只有Class<String>的一个实例,其类型(类)为Class<?>