Java反射实现框架类 Java利用反射实现框架类的方法实例
橘子汁886 人气:0想了解Java利用反射实现框架类的方法实例的相关内容吗,橘子汁886在本文为您仔细讲解Java反射实现框架类的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java中反射,深入理解java反射,java反射框架,下面大家一起来学习吧。
框架类的简单实现
实现步骤:
1. 加载配置文件
2. 获取配置文件中定义的数据
3. 加载该类进内存
主要讲解第一步:加载配置文件 的相关知识。
//1.加载配置文件 //1.1创建Properties对象 Properties pro = new Properties(); //1.2加载配置文件,转换为一个集合 //1.2.1获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is);
Properties 是map接口的实现类,它有一个特有的功能:可以保存到流中或者从流中加载。本例中用到它的方法有:
String getProperty(String key) //使用此属性列表中指定的键搜索属性
void load(Reader reader) // 从输入字符流读取属性列表(键和 元素对)
Java是面向对象语言,面向对象的语言的宗旨就是万事万物皆对象,那么类也是一个对象,类里面的属性和方法也是对象。java里面的所有的类都是Class类的对象,这个ReflectTest.class是获得这个类相对于Class类的对象。
getclassLoader是Class类下的方法,用于返回类加载器
getResourceAsStream 是ClassLoader类下的方法。可以返回输入流。
Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
以下是完整程序:
public class ReflectTest { public static void main(String[] args) throws Exception { //可以创建任意类的对象,可以执行任意方法 /* 前提:不能改变该类的任何代码。可以创建任意类的对象,可以执行任意方法 */ /* Person p = new Person(); p.eat();*/ /* Student stu = new Student(); stu.sleep();*/ //1.加载配置文件 //1.1创建Properties对象 Properties pro = new Properties(); //1.2加载配置文件,转换为一个集合 //1.2.1获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is); //2.获取配置文件中定义的数据 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //3.加载该类进内存 Class cls = Class.forName(className); //4.创建对象 Object obj = cls.newInstance(); //5.获取方法对象 Method method = cls.getMethod(methodName); //6.执行方法 method.invoke(obj); } }
总结
加载全部内容