java - ClassObject.getClass、ClassName.class 和 Class.forName 之间的区别 ("ClassName")

标签 java class classname

我想了解 Class.forName("ClassName") 和 ClassObject.getClass 是否都有效 返回类的运行时实例。那么为什么在比较从两者获得的 Class 对象时会获取一个 boolean 值 false(如果我们使用 == 或 equals 进行比较)。
我还想知道在类名上调用的 .class 方法的确切用途是什么。我读到它是在编译时等确定的,但目的是什么。 Class.forName("ClassName") 还不够吗?
谢谢

最佳答案

Class.forName 加载并初始化类。 obj.getClass() 返回加载到 permgen 中的类对象。如果该类由同一个类加载器加载 == 必须返回 true。当您在 == 比较中看到 false 时,这意味着它们是由不同的类加载器加载的。

关于java - ClassObject.getClass、ClassName.class 和 Class.forName 之间的区别 ("ClassName"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337439/

相关文章:

ruby - 动态获取变量值

c++ - 如何验证数据类型输入

javascript - 如何检查 DOM 中 div 的所有类名是否具有带有 vanilla Javascript 的特定字符串?

symfony - 如何在Symfony2上处理此错误消息: Case mismatch between loaded and declared class names?

php - 关于类别名的文档中是否存在错误?

java - 实体管理器,创建查询

java - 如何在 Spring 中生成没有默认请求/响应后缀的 wsdl?

java - 如何知道 JavaFX 中的插入符坐标(而不是位置)?

javascript - 在 className if-else 语法中 react JSX

java - 在Java中用图像填充矩形