Java中反射的概述及了解ClassLoader

反射的概述

1.本章的主要内容

①、理解Class类并获取Class实例
②、创建运行时类的对象
③、调用运行时类的指定结构
在这里插入图片描述

2.关于反射的理解

在这里插入图片描述
框架 = 反射 + 注解 + 设计模式

3.体会反射机制的“动态性”

是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构
举例:

public Object getInstance(String classPath) throws Exception {
    Class clazz = Class.forName(classPath);

    return clazz.newInstance();
}
public void test2(){
    for (int i = 0; i < 50; i++) {
        int num = new Random().nextInt(3);//0 1 2

        String pathName = "";

        switch(num){
            case 0:
                pathName = "java.util.Date";
                break;
            case 1:
                pathName = "java.lang.Object";
                break;
            case 2:
                pathName = "loey.java.Person";
                break;
        }
        try {
            Object obj = getInstance(pathName);
            System.out.println(obj);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4.反射机制能提供的功能

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量和方法
  • 在运行时获取泛型信息
  • 在运行时调用任意一个对象的成员变量和方法
  • 在运行时处理注解
  • 生成动态代理

5.相关API

  • java.lang.Class:代表一个类
  • java.lang.reflect.Method:代表类的方法
  • java.lang.reflect.Field:代表类的成员变量
  • java.lang.reflect.Constructor:代表类的构造器
    … …

ClassLoader

1.类的加载过程----了解

在这里插入图片描述

2.类的加载器的作用

在这里插入图片描述

3.类的加载器的分类

在这里插入图片描述

4.Java类编译、运行的执行的流程

在这里插入图片描述

5.使用Classloader加载src目录下的配置文件

        Properties pros = new Properties();

        //此时的文件默认在当前的module下。
        //读取配置文件的方式一:
//        FileInputStream fis = new FileInputStream("jdbc.properties");
//        FileInputStream fis = new FileInputStream("src\\jdbc1.properties");
//        pros.load(fis);

        //读取配置文件的方式二:使用ClassLoader
        //配置文件默认识别为:当前module的src下
// 关于类加载器的一个主要方法:getResourceAsStream(String str):获取类路 径下的指定文件的输入流
        ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("jdbc.properties");
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        System.out.println("user = " + user + ",password = " + password);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值