
普歌-简单框架的构建
发布日期:2021-05-07 11:03:17
浏览次数:18
分类:精选文章
本文共 2013 字,大约阅读时间需要 6 分钟。
需求:
写一个“框架”,不能改变任何该类的前提下,帮助我们创建任意类的对象,并且执行其中任意方法
实现:
(1)配置文件
(2)反射步骤:
(1)将所需要创建的对象的全类名(包名.类名)和需要执行的方法定义在配置文件中
(2)在程序中加载读取配置文件(使用Properties方法) (3)使用反射技术来加载类文件进内存 (4)创建对象 (5)执行方法代码演示:
这里就演示一个简单的Student类吧!
(1) 首先创建一个Student类,配备get和set方法,空参和满参,重写toString方法,一个sleep方法和school方法
Student类
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) { this.name = name; this.age = age;}public String getName() { return name;}public void setName(String name) { this.name = name;}public int getAge() { return age;}public void setAge(int age) { this.age = age;}@Overridepublic String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';}public void sleep(){ System.out.println("sleep,打呼噜");}public void school(){ System.out.println("go to school");}}
(2)鼠标右键new一个File,输入文件名,配置文件中需要对象的全类名和执行的方法,这边演示Studnt类的两个方法,sleep和school
配置文件:
className=Student//(全类名,这里直接在src内操作,所有可以省略包名,一般都是包名.类名)methodName=sleep//(sleep方法)methodName1=school//(school方法)
(3)测试类,读取配置文件,使用反射技术,创建对象,执行方法
测试类:
import java.io.InputStream;import java.lang.reflect.Method;import java.util.Properties;public class ReflectTest {public static void main(String[] args) throws Exception { //创建Properties对象 Properties p = new Properties(); //获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("puge.yiyan"); //调用load方法加载配置文件,转换为一个集合 p.load(is); //获取配置文件中定义的数据 String className = p.getProperty("className"); String methodName = p.getProperty("methodName"); String methodName1 = p.getProperty("methodName1"); //加载该类进内存 Class cls = Class.forName(className); //创建对象 Object obj = cls.newInstance(); //获取方法对象 Method method = cls.getMethod(methodName); Method method1 = cls.getMethod(methodName1); //执行方法 method.invoke(obj); method1.invoke(obj);}}
执行结果:
sleep,打呼噜go to school
简单框架的构建,你学会了吗?
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月10日 15时49分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java ThreadPoolExecutor初探
2019-03-06
Markdown进阶
2019-03-06
快速指数算法
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
Spring 框架基础(01):核心组件总结,基础环境搭建
2019-03-06
JavaEE基础(02):Servlet核心API用法详解
2019-03-06
SpringBoot2 整合Nacos组件,环境搭建和入门案例详解
2019-03-06
Sentry快速开始并集成钉钉群机器人
2019-03-06
Docker 服务
2019-03-06
Cassandra数据建模
2019-03-06
Elasticsearch Web管理工具
2019-03-06
评论表聚集索引引起的评论超时问题
2019-03-06
Internet Explorer 10 专题上线
2019-03-06
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06
上周热点回顾(8.12-8.18)
2019-03-06
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
2019-03-06
蹒跚来迟:新版博客后台上线公测
2019-03-06