JAVA反射机制中getClass( )和class()区别

  • Post author:
  • Post category:java


java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然。这两个方法涉及到了java中的反射。

类名.class 的方式更加安全,例如当你要获取一个接口的class时,可以使用 类名.class 的方式获取但此时就不能通过对象.class 的方式获取了,因为接口是没有实例对象的,接口只有实现类对象,通过这种方式获取到的是接口的实现类的class,而非是接口的class再者就是对象声明的类型未必是对象本身真正的类型,通过对象获取class容易产生混乱,因此尽量使用更加安全的方式.


class属性

当你要获得一个类的Class对象时(作函数参数的时候),你不能调用getClass方法,那你只能用类名.class来达到效果

例子:

System.out.println(JButton.class);

输出:

class javax.swing.JButton

getClass方法:该方法只能由类的实例变量调用

类型:public final Class<? extends Object> getClass()

功能:返回该对象的运行时类的java.lang.Class对象(API上的解释)

例子:

JButton b1 = new JButton(“button1”);

System.out.println(b1.getClass());

输出:

class javax.swing.JButton

区别

类名.class叫做“类字面量”,因class是关键字, 所以类



版权声明:本文为yang84256原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。