栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java利用反射实现框架类的方法实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 {
    //可以创建任意类的对象,可以执行任意方法

    
   


    //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);


  }
}

总结

到此这篇关于Java利用反射实现框架类的文章就介绍到这了,更多相关Java反射实现框架类内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/130990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号