反射应用案例

反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的
那么我们现在来讲讲反射的应用—构建具有一定类似框架功能,以此来看看反射的优越性
首先创建一个properties文件,例如我的叫da.properties(也称为配置文件)(注意创建的properties文件要放在该项目的src文件直属目录下,不能放在对应包下,否者会报错),再在该配置文件中写下简单的键值对例如

classname=fzjcdt.bfg
method=dd

键无所谓,值的话,看你要进行的操作是什么,比如说我要通过这整个代码去执行某个类的某个方法,即值设为那个类的全类名,和方法名
其他代码如下

package reflect;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
public class da {
    public static void main(String[] args) throws Exception {
        //加载配置文件
        Properties s=new Properties();
        ClassLoader classLoader = da.class.getClassLoader();//获取da类的类加载器对象
        InputStream s1 = classLoader.getResourceAsStream("da.properties");//同过da类的类加载器路径获取这个文件的输入流
        s.load(s1);//按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
      //  获取配置文件中定义的数据
        // 用指定的键在此属性列表中搜索属性。
        String classname = s.getProperty("classname");//返回要加载的类的全类名
        String mothod = s.getProperty("method");//返回要加载的类的方法名
        //加载该类进内存
        Class s2 = Class.forName(classname);//返回该类的class对象
        Object o = s2.newInstance();//新建对象
        Method method = s2.getMethod(mothod);//返回该方法的对象
        method.invoke(o);//执行方法

    }
}

版权声明:本文为weixin_45876091原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>