1、通过对象获得类的class对象
- Class aClass = 对象.getClass();
- Person person = new Person();
Class c1 = person.getClass();
- Person person = new Person();
2、通过Class.forName("包名+类名")获取类的class对象
- Class c2 = Class.forName("com.xbky.Person");
3、通过类名获取Class对象
- Class aClass =类名.class;
- Class
c3 = Person.class;
- Class
4、基本数据类型的包装类都有一个TYPE属性,可以直接用类名.TYPE
获取
- Class c4 = Integer.TYPE;
- Class c4 = Byte.TYPE;
package com.xbky;
/**
* 测试类
*/
public class 获取Class对象的几种方式 {
public static void main(String[] args) throws ClassNotFoundException {
// 1、通过对象获得类的class对象
Person person = new Person();
Class c1 = person.getClass();
System.out.println(c1.hashCode()); // 685325104
// 2、通过Class.forName("包+类")获取类的class对象
Class c2 = Class.forName("com.xbky.Person");
System.out.println(c2.hashCode()); // 685325104
// 3、通过类名获取Class对象
Class<Person> c3 = Person.class;
System.out.println(c3.hashCode()); // 685325104
// 4、基本数据类型的包装类都有一个 TYPE属性,能够获取包装类的class对象
Class<Integer> integerClass1 = Integer.TYPE;
Class<Integer> integerClass2 = Integer.TYPE;
Class<Byte> byteClass = Byte.TYPE;
System.out.println(integerClass1.hashCode()); // 460141958
System.out.println(integerClass2.hashCode()); // 460141958
System.out.println(byteClass.hashCode()); //1163157884
// 5、通过Class对象获取父类的类型
Class superclass = c1.getSuperclass();
System.out.println(superclass); // class java.lang.Object
}
}
/**
* 类
*/
class Person {
}
总结:
1、获取一个普通类的Class对象,可以通过getClass()、Class.forName(String name)、类名.class三种方式,包装类可以直接调用TYPE属性获取Class对象。
2、每个类不管创建多少个类对象,它们的Class对象都是同一个,可以通过hashCode()方法来查看他们的hashCode码。