Java--反射

学习连接:https://www.bilibili.com/video/BV18J411W7cE?p=395 中P395-P407

1. 类加载与类加载器

1.1 类加载

在这里插入图片描述
在这里插入图片描述

1.2 类加载器

在这里插入图片描述
在这里插入图片描述

2. 反射

2.1 反射概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。

2.2 获取Class类的对象

在这里插入图片描述

2.3 反射获取构造方法并使用

在这里插入图片描述
在这里插入图片描述

2.4 反射获取成员变量并使用

在这里插入图片描述

2.5 反射获取成员方法并使用

在这里插入图片描述

2.6 反射练习之越过泛型检查

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * 练习1:我有一个ArrayList<Integer>集合,现在我想在这个集合中添加一个字符串数据,如何实现?
 */
public class Demo1 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        //创建集合
        ArrayList<Integer> arr = new ArrayList<Integer>();

//        arr.add(10);
//        arr.add(20);
//        System.out.println(arr);

        Class<? extends  ArrayList> c = arr.getClass();
        Method m = c.getMethod("add", Object.class);

        m.invoke(arr,"hello");
        m.invoke(arr,"world");
        m.invoke(arr,"java");
        System.out.println(arr);

    }
}

2.7 反射练习之运行配置文件制定内容

2.7.1 Test类

public class Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {

        Properties pros = new Properties();
        FileReader fr = new FileReader("class.txt");
        pros.load(fr);
        fr.close();

        String className = pros.getProperty("className");
        String methodName = pros.getProperty("methodName");

        Class c = Class.forName(className);
        Constructor con = c.getConstructor();
        Object obj = con.newInstance();

        Method m = c.getMethod(methodName);
        m.invoke(obj);

    }
}

2.7.2 Student类

public class Student {
    public void study(){
        System.out.println("学生学习");
    }
}

2.7.3 class.txt

className=myReflect.demo2.Student
methodName=study
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值