java反射小实例
2024-10-08 02:56:50
利用反射实现
对配置文件的更改达到更改方法的目的
文件夹目录
首先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调用方法的时候附带上参数。(这里偷工减料参数直接写了,最好也是通过配置动态加载进来
最新文章
- java文件复制函数
- Struts2拦截器之DefaultWorkflowInterceptor
- [CareerCup] 16.3 Dining Philosophers 哲学家聚餐问题
- The Shortest Path in Nya Graph---hdu4725(spfa+扩点建图)
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.2.更换主题
- UML类图几种关系的总结,泛化 = 实现 >; 组合 >; 聚合 >; 关联 >; 依赖
- WCF 项目应用连载[2] - 创建Lig日志系统
- Java中基本数据类型和包装器类型的关系
- hdu4614 Vases and Flowers 线段树+二分
- pg备份恢复与设置编码
- cassandra 并发技术介绍
- cpu iowait高排查的case
- 在MSYS2环境下 用msvc 编译 zlib
- mssql sqlserver xml数据类型专题
- TCP‘三次握手’和‘四次挥手’(通俗易懂)
- 亲写javascript 各类面试题
- checkbox 全选效果
- javascript显示年月日时间代码
- python 爬取妹子图
- PHP面向对象详解:继承、封装与多态
热门文章
- 如何利用 Webshell 诊断 EDAS Serverless 应用
- LeetCode225 Implement Stack using Queues
- 【Leetcode链表】旋转链表(61)
- 【JZOJ4833】【NOIP2016提高A组集训第3场10.31】Mahjong
- 在laravel框架中使用ajax请求报错419
- 2018-7-9-dotnet-设计规范-·-数组定义
- python常量和变量
- hdu 4114 Disney's FastPass(最短路+状态压缩)
- day2_python之字符编码
- phpStudy本地环境测试,打开网页很慢的解决办法!