Java高阶-----反射

  1. 什么是反射?
  2. 为什么使用反射?
  3. 如何获取反射类
  4. Class反射类常用的方法?
  5. 获取反射Method对象
  6. Method类中具有的方法
  7. 获取反射Field对象
  8. Field类中常有的方法

 1.什么是反射

反射是框架设计的灵魂

之前学过mybatis框架,spring框架,springmvc框架mvc框架

反射就是类在运行期间,把类成员抽取为其他类的过程就是反射

 2.为什么使用反射

反射是为了解决在运行期间,对某个实例一无所知的情况下,如何调用其方法或属性

例如:spring框架中只需要传入类的路径,spring框架就会帮你创建类的对象 

3.获取Class反射类的方式

第一种:通过类名.class属性

Class<Student> studentClass = Student.class;

第二种:通过类路径获取

Class student=Class.forName("com.syh.test.Student")

第三种:通过方法名获取反射类型

Student stu=new Student();
Class student2=student.getClass()

三种方法是相同的

 

 4.Class反射类常用的方法?

1.根据反射类得到实例对象 newInstance()

 

2.根据得到反射类上的注解对象。getAnnotation()

 5.获取Method方法类对象

getDeclaredMethods(): 得到本类中所有的方法

getDeclaredMethod("方法名",参数类型):获取本类中指定的方法对象

getMethods():获取本类以及父辈类中public修饰的方法。

getMethod("方法名",参数类型):获取本类以及父辈类中指定public修饰的方法

 6.Method类中具有的方法

Object r=invoke(Object对象,参数值) 返回方法执行的结果

setAccessible()设置允许访问私有成

 7.获取Field属性对象的方式

set(Object对象,值):为属性赋值

getName():获取属性名

getAnnotation():获取属性上的注解对

 8.案例

 public static void main(String[] args) throws Exception {
        //1.加载属性文件--不会xml [Dom4j解析]
        InputStream resourceAsStream = Test01.class.getClassLoader().getResourceAsStream("qy174.properties");
        //2.通过属性类Properties
        Properties properties=new Properties();
        properties.load(resourceAsStream);
        //3.属性类读取属性文件中指定的key的值
        String className = properties.getProperty("className");
        //4. 根据类路径得到反射对象
        Class<?> aClass = Class.forName(className);
        //5. 根据反射类创建类对象
        Object o = aClass.newInstance();
        System.out.println(o);
        //6.为属性赋值
        Field[] declaredFields = aClass.getDeclaredFields();
        for(Field field:declaredFields){
            field.setAccessible(true);
            field.set(o,new Random().nextInt(1000)+"");
        }
        System.out.println(o);
    }

properties属性文件中指定类的路径,通过反射完成类对象的创建以及类中属性的赋值

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值