Java--反射--反射机制快速入门
- 反射的目录:
-
反射的需求引出反射:
-
package com.model.fanshe; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Properties; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/26 21:25 */ public class FanSheDemo01 { public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException { // 传统的方式我们调用类的Cat的hi方法 Cat cat = new Cat(); cat.hi(); // 非传统的方式实现类中方法的调用 // 1.利用文件流的形式(Properties的使用),我们尝试使用,明白反射 String filePath="D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_fanshehezhujie\\src\\main\\resources\\re.properties"; Properties properties = new Properties(); properties.load(new FileReader(filePath)); String classFullPath = properties.getProperty("classFullPath"); String method = properties.getProperty("method"); // 2.拿到配置文件中的类的信息,创建对象 // 传统的方式我们无法创建对象 --》只有使用我们的反射机制才能创建对象 // new classFullPath(); 错误的我们不能使用字符串代替类,进行创建对象 // 3.反射机制的使用,快速入门 // 3.1加载类,返回Class类型的对象aClass Class<?> aClass = Class.forName(classFullPath); // 3.2 通过 aClass 对象的到加载类 com.model.fanshe.Cat 类的实例对象 Object o = aClass.newInstance(); // 3.3通过 aClass 的到方法的实例对象: // 即:在反射中,方法也被当做是对象来创建, Method method1 = aClass.getMethod(method); // 4.通过method对象调用某个 com.model.fanshe.Cat 类实例对象的方法 method1.invoke(o); //在传统的方法中。我们使用 实例对象.方法名() , 但是在方法中我们使用的是 方法对象.invoke(类的实例对象) /** * 1.通过向类加载器中传入一个,某个类的路径信息,的到类加载器的一个实例 * 2.通过类加载器的实例,我们可以的到 这个类的实例对象和类中的方法对对象 * 3.再通过 实例对象和方法对象 调用类中的方法 * * 且我们可以在不修改源码的同时,只修改配置文件就可以实现对 不同类中不同方法进行调用 * */ } }