反射小笔记

获取 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 +
                '}';
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值