获取 Class实例的五个方法:
1.使用类名获得
Class c1 =类名.class();
2.使用对象获得
class a =new class();
Class c2 =a.getClass();
3.通过forName方法获得
Class c3 =Class.forName("");//参数填所要获得类的相对路径,从包开始
4.包装类的Class实例可以通过Type属性获得
Class c4 =Integer.TYPE;
5.通过子类的Class实例获得父类的Class实例
Class c5 =c1.getSuperclass();
以下是练习代码:
class ReflectionTest{
public static void main(String[] args) throws Exception{
//一个类只能有一个Class类对象
//通过forName方法获取对应类的Class实例
Class c1 = Class.forName("user");
System.out.println(c1);
System.out.println(c1.hashCode());
//通过类名获得。获取Class实例的最安全可靠高效的方法。
Class c2 =user.class;
System.out.println(c2);
System.out.println(c1.hashCode());
//获取Class实例的另一种方法.通过类的对象获得
user u1 =new user();
Class c3 =u1.getClass();
System.out.println(c3);
System.out.println(c1.hashCode());
//基本内置类型的包装类有一个Type属性。可以获得包装类的Class实例
Class i1 = Integer.TYPE;
System.out.println(i1);
System.out.println(i1.hashCode());
//获得父类的Class实例.在这里user类继承了demo14类(注意用的是c1,是user类的CLass实例)
Class s1 =c1.getSuperclass();
System.out.println(s1);
System.out.println(s1.hashCode());
//所有类型的Class
Class a1 =Object.class;//类
Class a2 =Comparable.class;//接口
Class a3 =String[].class;//一维数组
Class a4 =float[][].class;//二维数组
Class a5 =Override.class;//注解
Class a6 =ElementType.class;//枚举
Class a7 =Integer.class;//基本数据类型
Class a8 =void.class;//void
Class a9 =Class.class;//Class
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
System.out.println(a5);
System.out.println(a6);
System.out.println(a7);
System.out.println(a8);
System.out.println(a9);
}
}
class user extends demo14{
private int id;
private String name;
private int age;
public user() {
}
public user(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "user{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}