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 版权协议,转载请附上原文出处链接和本声明。