反射的基本介绍和获取Class的实例

获取Class对象的实例

package com.zhujieandfanshe;

//获取Class对象的实例
public class TestGetClass01 {
    public static void main(String[] args) throws ClassNotFoundException {
        Person person = new Student();
        //1.通过对象获取Class
        Class c1 = person.getClass();
        System.out.println(c1.hashCode());
        //2.通过forClass
        Class c2 = Class.forName("com.zhujieandfanshe.Student");
        System.out.println(c2.hashCode());
        //3.通过类获得Class
        Class c3 = Student.class;
        System.out.println(c3.hashCode());
        //4.基本内置类的包装类都有一个Type属性,也可以获得对应的Class
        Class c4 = Integer.TYPE;
        System.out.println(c4);
        //5.根据获得的Class获取父类的类型
        Class c5 = c1.getSuperclass();
        System.out.println(c5);
    }
}

class Person {

    public String name;
    private int age;

    //无参构造器
    public Person() {
    }

    //有参构造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name=" + name +  +
                ", age=" + age +
                };
    }
}

class Student extends Person {
    public Student() {
        this.name = "学生";
    }
}

class Teacher extends Person {
    public Teacher() {
        this.name = "老师";
    }
}

哪些类可以有Class对象

哪些类可以有Class的实例

package com.zhujieandfanshe;

import java.lang.annotation.ElementType;

//哪些类型有Class
public class Test02 {
    public static void main(String[] args) {
        Class c1 = Object.class;
        Class c2 = Comparable.class;
        Class c3 = String[].class;
        Class c4 = int[][].class;
        Class c5 = ElementType.class;
        Class c6 = Override.class;
        Class c7 = void.class;
        Class c8 = Integer.class;
        Class c9 = Class.class;
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
        System.out.println(c7);
        System.out.println(c8);
        System.out.println(c9);
        //只要元素类型和维度一样,就对应同一个Class
        int[] a = {1, 2, 2, 3};
        int[] b = {1, 2, 4, 5, 6, 6, 6, 4};
        Class c10 = a.getClass();
        Class c11 = b.getClass();
        System.out.println(c10.hashCode());
        System.out.println(c11.hashCode());


    }
}
经验分享 程序员 微信小程序 职场和发展