调用 MyClass.class 和 MyClass.getClass() 有什么区别
2022-09-02 20:37:28
MyClass.class
并且两者似乎都返回.是否存在细微的区别,或者它们可以互换使用吗?另外,是超类类的公共财产吗?(我知道这存在,但似乎在javadocs中找不到任何提及它的地方)MyClass.getClass()
java.lang.Class
MyClass.class
Class
MyClass.class
并且两者似乎都返回.是否存在细微的区别,或者它们可以互换使用吗?另外,是超类类的公共财产吗?(我知道这存在,但似乎在javadocs中找不到任何提及它的地方)MyClass.getClass()
java.lang.Class
MyClass.class
Class
一个是实例方法,所以它返回特定对象的类,另一个是Class常量(即在编译时已知)。
Class n = Number.class;
Number o = 1;
o.getClass() // returns Integer.class
o = BigDecimal.ZERO;
o.getClass(); // returns BigDecimal.class
这两种情况都返回 Class 对象的实例,该对象描述特定的 Java 类。对于同一类,它们返回相同的实例(每个类只有一个 Class 对象)。
访问类对象的第三种方法是
Class n = Class.forName("java.lang.Number");
请记住,接口还具有 Class 对象(如上面的 Number)。
此外,MyClass.class超类类的公共属性吗?
它是一个语言关键字。
.getClass()
返回对象的运行时类,因此在更改变量的类时可以对其进行修改
.class
另一方面,始终返回“类型”的类常量
注意:
如果运行时类恰好与 TYPE 类相同,则两者将相等。例:
Long x = new Long(2);
Class c1 = Long.class;
Class c2 = x.getClass();
//c1==c2