java - Java中的a.getClass()和A.class有什么区别?

标签 java class reflection

在Java 中,选择使用a.getClass() 存在哪些优缺点?或 A.class ?任何一个都可以在 Class<?> 的任何地方使用是预期的,但我想在不同的情况下使用这两种方法会有性能或其他微妙的好处(就像 Class.forName()ClassLoader.loadClass() 一样。

最佳答案

我不会比较它们的优缺点,因为它们有不同的目的,而且很少在两者之间做出“选择”。

  • a.getClass() 返回a运行时类型。即,如果您有 A a = new B(); 那么 a.getClass() 将返回 B 类。

  • A.class静态评估为 A 类,并用于通常与反射相关的其他目的。

在性能方面,可能存在可衡量的差异,但我不会说什么,因为最终它取决于 JVM 和/或编译器。


本帖已改写为文章 here .

关于java - Java中的a.getClass()和A.class有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10947768/

相关文章:

java - 通过反射实现策略模式

Scala:如何检查是否至少定义了一个类的字段?

java - 如何从子类修改父类(super class)变量?

python - 动态惰性类属性python

pointers - 如何在 Go 中将动态创建的结构作为非指针对象传递

java - 如果一个类是最终的,我如何判断使用反射

java - Uber API - 提前预订

java - 以编程方式 ScrollView

java - Java中的调用方法

java - 使用自定义类类型将 json 文件转换为 Java 映射