利用反射实现

对配置文件的更改达到更改方法的目的

文件夹目录

首先Student类中有个sleep方法

pro.properties定义了参数

最后是RelectTestMain。

package com.reflex.test;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties; import javax.annotation.Resource;
import javax.annotation.Resources; import com.reflex.bean.Person;
import com.reflex.bean.Student; public class RelectTestMain {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
/*1、加载配置文件
* 用类名.class.getResourceAsStream("/xx")或者
* 类名.class.getClassLoader().getResourceAsStream("xx");
* 区别在于前者是需要反斜杠,后者不需要
* */
Properties properties = new Properties();
properties.load(RelectTestMain.class.getResourceAsStream("/pro.properties"));
//2、获取配置文件中定义的数据
String className = properties.getProperty("className");
String methodName = properties.getProperty("methodName");
//3、加载该类进内存
Class cls = Class.forName(className);
//4、创建类对象
Object obj = cls.newInstance();
//5、获取对象方法
Method method = cls.getMethod(methodName);
//6、执行方法
method.invoke(obj);
}
}

如果需要传入参数,则在获取对象的时候使用getDeclaredMethod方法,附上参数类的class,最后再在invork调用方法的时候附带上参数。(这里偷工减料参数直接写了,最好也是通过配置动态加载进来

最新文章

  1. java文件复制函数
  2. Struts2拦截器之DefaultWorkflowInterceptor
  3. [CareerCup] 16.3 Dining Philosophers 哲学家聚餐问题
  4. The Shortest Path in Nya Graph---hdu4725(spfa+扩点建图)
  5. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.2.更换主题
  6. UML类图几种关系的总结,泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
  7. WCF 项目应用连载[2] - 创建Lig日志系统
  8. Java中基本数据类型和包装器类型的关系
  9. hdu4614 Vases and Flowers 线段树+二分
  10. pg备份恢复与设置编码
  11. cassandra 并发技术介绍
  12. cpu iowait高排查的case
  13. 在MSYS2环境下 用msvc 编译 zlib
  14. mssql sqlserver xml数据类型专题
  15. TCP‘三次握手’和‘四次挥手’(通俗易懂)
  16. 亲写javascript 各类面试题
  17. checkbox 全选效果
  18. javascript显示年月日时间代码
  19. python 爬取妹子图
  20. PHP面向对象详解:继承、封装与多态

热门文章

  1. 如何利用 Webshell 诊断 EDAS Serverless 应用
  2. LeetCode225 Implement Stack using Queues
  3. 【Leetcode链表】旋转链表(61)
  4. 【JZOJ4833】【NOIP2016提高A组集训第3场10.31】Mahjong
  5. 在laravel框架中使用ajax请求报错419
  6. 2018-7-9-dotnet-设计规范-·-数组定义
  7. python常量和变量
  8. hdu 4114 Disney's FastPass(最短路+状态压缩)
  9. day2_python之字符编码
  10. phpStudy本地环境测试,打开网页很慢的解决办法!