一个类在Java中是否具有(唯一)身份?

语句“ 一个类具有唯一标识”。对还是错?

java中的对象具有唯一的标识(至少通过它们的内存地址),但是一类也具有唯一的标识吗?由于类不是对象,对此我感到困惑。还是需要实例化一个类(甚至可能)?

hcmove 回答:一个类在Java中是否具有(唯一)身份?

首先,一个类在包级别必须是唯一的,但是您可以在不同的包中使用相同的类名。考虑java.util.Timerjava.swing.Timer。还有很多其他例子。

并不是所有的类都需要实例化才能使用。考虑具有静态方法的Math类。

,

每个类都有一个关联的实例(Object.class类为Object)。该实例是每个类加载器唯一的 。这意味着类在类加载器中确实具有唯一标识。但是,同一Foo类可以在JVM中(例如,在容器的两个不同的Web应用程序中)加载两次。

还要注意,«系统类»始终由根类加载器加载,因此在JVM中具有唯一标识。

,

是非否,取决于您对身份的定义。

因为类是通过类的全限定名(FQN)定位并加载到JVM中的,例如java.util.String,很容易想到这些FQN是唯一的,但是Java程序可以运行多个ClassLoader实例,每个实例都加载了自己的共享相同FQN的类的版本。这些类及其实例将在代码中进行相等性检查失败,并且即使它们是从磁盘上的同一.class文件加载的,也无法相互转换。

因此,该语句是错误的,因为可以使用相同的身份加载多个类,但该语句是正确的,因为它们在JVM看来都是唯一可区分的。

,

如果您将其放入其中,则它的名称就是其唯一标识符。

本文链接:https://www.f2er.com/3006093.html

大家都在问