Java 是否保证 Object.getClass() == Object.getClass()?
我在这里确实是指身份平等。
例如,以下内容是否始终打印为 true?
System.out.println("foo".getClass() == "fum".getClass());
我在这里确实是指身份平等。
例如,以下内容是否始终打印为 true?
System.out.println("foo".getClass() == "fum".getClass());
是的,类标记是唯一的(对于任何给定的类装入器,就是这样)。
也就是说,您将始终在同一类装入器领域内获得对同一物理对象的引用。但是,不同的类装入器将装入不同的类标记,并且当由两个不同的类装入器装入时,同一类定义被视为不同。
请参阅我之前的答案,以对此进行演示。
对于类 的两个实例,X
x1.getClass() == x2.getClass()
仅当
x1.getClass().getClassLoader() == x2.getClass().getClassLoader()
注意:Class.getClassLoader()
可能返回 null,这意味着引导类加载器。