反射知识点整理

目录

一、概述

二、获取Class类对象的三种方式

1、类名.class属性

2、对象名.getClass()方法

3、Class.forName(全类名)方法

三、反射获取构造方法

1、方法介绍

 2、代码实现

3、注意事项

4、获取构造方法的基本使用

四。反射获取成员变量

1、方法介绍

 2、代码实现

3、获取成员变量的基本使用

五、反射获取成员方法

1、方法介绍

 2、代码实现

3、获取带参成员方法的代码演示

六、反射的应用

1、反射之越过泛型检查

2、运行配置文件中指定类的指定方法


一、概述

反射指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。而这种动态的机制极大的增强了程序的灵活性。在学习中看见一句话总结的很恰当——反射就是把java类中的各种成分映射是一个个的对象。

要获取类的成分首先就需要获取该类的字节码文件对象接下来就从获取Class类对象的方法开始整理知识点,依次介绍反射如何获取构造方法、成员变量、成员方法的方法并通过代码演示来具体实现方法的使用。

二、获取Class类对象的三种方式

1、类名.class属性

 //使用类的class属性来获取该类对应的Class对象
        Class<Student> c1 = Student.class;
        System.out.println(c1);

2、对象名.getClass()方法

  //调用对象的getClass()方法,返回该对象所属类对应的Class对象
        Student s = new Student();
        Class<? extends Student> c3 = s.getClass();

3、Class.forName(全类名)方法

 //使用Class类中的静态方法forName(String className)
        Class<?> c4 = Class.forName("com.itheima_02.Student");

三、反射获取构造方法

1、方法介绍

Class类获取构造方法对象的方法:

方法名 说明
Constructor<?>[] getConstructors() 返回所有公共构造方法对象的数组
Constructor<?>[] getDeclaredConstructors() 返回所有构造方法对象的数组
Constructor<T> getConstructor(Class<?>... parameterTypes) 返回单个公共构造方法对象
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 返回单个构造方法对象

Constructor类用于创建对象的方法:

T newInstance(Object...initargs) 根据指定的构造方法创建对象

 2、代码实现

        //获取class对象
        Class<?> c = Class.forName("Test.Student");
        //Constructor<?>[] getConstructors()返回所有公共构造方法对象的数组
        Constructor<?>[] cons = c.getConstructors();
        //Constructor<?>[] getDeclaredConstructors()返回所有构造方法对象的数组
        Constructor<?>[] cons = c.getDeclaredConstructors();
        for(Constructor con : cons) {
            System.out.println(con);
        }
        //Constructor<T> getConstructor(Class<?>... parameterTypes)返回单个公共构造方法对象
        Constructor<?> c2 = c.getConstructor(String.class,int.class,String.class);
        Object obj = c2.newInstance("张三",15,"cq");
        System.out.println(obj);
        //Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)返回单个构造方法对象
        Constructor<?> con = c.getDeclaredConstructor(String.class);

3、注意事项

当构造方法为私有修饰时需要进行暴力反射(

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值