网易首页 > 网易号 > 正文 申请入驻

Java培训:Java反射调用方法示例

0
分享至

1.代码

import java.util.*;import java.io.*;import java.lang.reflect.*;public class ExtendedObjectPoolFactory { // 定义一个对象池,前面是对象名,后面是实际对象 private Map

objectPool = new HashMap<>(); private Properties config = new Properties(); // 从指定属性文件中初始化Properties对象 public void init( String fileName ) { try ( FileInputStream fis = new FileInputStream(fileName)) { config.load(fis); } catch (IOException ex) { System.out.println("读取" + fileName + "异常"); } } // 定义一个创建对象的方法, // 该方法只要传入一个字符串类名,程序可以根据该类名生成Java对象 private Object createObject( String clazzName ) throws InstantiationException , IllegalAccessException, ClassNotFoundException { // 根据字符串来获取对应的Class对象 Class clazz = Class.forName(clazzName); // 使用clazz对应类的默认构造器创建实例 return clazz.newInstance(); } // 该方法根据指定文件来初始化对象池, // 它会根据配置文件来创建对象 public void initPool() throws InstantiationException , IllegalAccessException, ClassNotFoundException { for (String name : config.stringPropertyNames()) { // 每取出一对key-value对,如果key中不包含百分号(%) // 这就标明是根据value来创建一个对象 // 调用createObject创建对象,并将对象添加到对象池中 if (!name.contains("%")) { objectPool.put(name, createObject(config.getProperty(name))); } } } // 该方法将会根据属性文件来调用指定对象的setter方法 public void initProperty() throws InvocationTargetException , IllegalAccessException, NoSuchMethodException { for (String name : config.stringPropertyNames()) { // 每取出一对key-value对,如果key中包含百分号(%) // 即可认为该key用于控制调用对象的setter方法设置值, // %前半为对象名字,后半控制setter方法名 if (name.contains("%")) { // 将配置文件中key按%分割 String[] objAndProp = name.split("%"); // 取出调用setter方法的参数值 Object target = getObject(objAndProp[0]); // 获取setter方法名:set + "首字母大写" + 剩下部分 String mtdName = "set" + objAndProp[1].substring(0, 1).toUpperCase() + objAndProp[1].substring(1); // 通过target的getClass()获取它实现类所对应的Class对象 Class targetClass = target.getClass(); // 获取希望调用的setter方法 Method mtd = targetClass.getMethod(mtdName, String.class); // 通过Method的invoke方法执行setter方法, // 将config.getProperty(name)的值作为调用setter的方法的参数 mtd.invoke(target, config.getProperty(name)); } } } public Object getObject( String name ) { // 从objectPool中取出指定name对应的对象。 return objectPool.get(name); } public static void main( String[] args ) throws Exception { ExtendedObjectPoolFactory epf = new ExtendedObjectPoolFactory(); epf.init("extObj.txt"); epf.initPool(); epf.initProperty(); System.out.println(epf.getObject("a")); }}

2.配置

a=javax.swing.JFrameb=javax.swing.JLabel#set the title of aa%title=Test Title

3.运行

E:\Java\疯狂java讲义\codes\18\18.4>java ExtendedObjectPoolFactoryjavax.swing.JFrame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=Test Title,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]

以上就是动力节点小编介绍的"Java反射调用方法示例"的内容,希望对大家有帮助

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
俄罗斯核潜艇将罕见访问古巴,古方强调“未携带核武器”

俄罗斯核潜艇将罕见访问古巴,古方强调“未携带核武器”

澎湃新闻
2024-06-07 11:22:31
张朝阳:在中国长大耽误太多时间

张朝阳:在中国长大耽误太多时间

蓝橡树
2024-06-06 07:34:34
国家发改委:不得以机械加工、铸造、铁合金等名义新增钢铁产能 严格限制高耗能低附加值钢材、生铁、焦炭等产品出口

国家发改委:不得以机械加工、铸造、铁合金等名义新增钢铁产能 严格限制高耗能低附加值钢材、生铁、焦炭等产品出口

财联社
2024-06-07 16:18:08
国务院发文!全国医改方向定了:耗材集采、反腐…

国务院发文!全国医改方向定了:耗材集采、反腐…

医疗器械经销商联盟
2024-06-07 17:52:19
蔡磊夫妇,“翻车”了,直播镜头后的蔡磊,藏不住了?

蔡磊夫妇,“翻车”了,直播镜头后的蔡磊,藏不住了?

李昕言温度空间
2024-06-05 14:54:34
74岁上海作家,和98岁母亲一起住养老院:家里没电梯,上上下下都吃不消……邻居慕了!

74岁上海作家,和98岁母亲一起住养老院:家里没电梯,上上下下都吃不消……邻居慕了!

上观新闻
2024-06-06 19:11:07
调查显示,15%的旅客在飞机上发生过性关系

调查显示,15%的旅客在飞机上发生过性关系

中国民航人
2024-06-07 10:42:21
曲阜:“一张网”汇聚起基层治理的“千头万绪”

曲阜:“一张网”汇聚起基层治理的“千头万绪”

央广网
2024-06-08 00:30:21
官宣!西班牙欧洲杯名单出炉:曼城1亿先生领衔,巴萨2大天才落选

官宣!西班牙欧洲杯名单出炉:曼城1亿先生领衔,巴萨2大天才落选

阿超他的体育圈
2024-06-07 19:08:59
看了2024高考作文题,我顿悟什么是一个人最高级的情商

看了2024高考作文题,我顿悟什么是一个人最高级的情商

洞见
2024-06-07 21:38:52
俄国很生气,宣布了三件事,但世界似乎没反应

俄国很生气,宣布了三件事,但世界似乎没反应

近距离
2024-06-07 12:42:38
公安部:即日起在全国范围内组织开展打击对公侵财犯罪专项行动

公安部:即日起在全国范围内组织开展打击对公侵财犯罪专项行动

新京报
2024-06-07 10:34:35
风向大变?大陆代表赴台,台北市长避而不见,马英九:有不好预感

风向大变?大陆代表赴台,台北市长避而不见,马英九:有不好预感

小lu侃侃而谈
2024-06-07 22:29:20
北京一军官娶海军美女少校为妻,2年后才发现妻子的真实身份

北京一军官娶海军美女少校为妻,2年后才发现妻子的真实身份

星辰故事屋
2024-06-05 12:16:48
暴跌95%,中国葡萄酒,崩了

暴跌95%,中国葡萄酒,崩了

市值Observation
2024-06-07 20:32:35
为保障考生出行 北京地铁做好加开列车准备

为保障考生出行 北京地铁做好加开列车准备

新京报
2024-06-07 08:05:06
喝茶对心脏到底是好是坏?医生苦劝:4种茶,一口都不要喝

喝茶对心脏到底是好是坏?医生苦劝:4种茶,一口都不要喝

宋若讲故事
2023-01-18 21:38:26
被消耗的激情,日渐逼仄!

被消耗的激情,日渐逼仄!

吴女士
2024-06-06 10:41:17
今晚,美国又放大招!全球市场应声跳水...

今晚,美国又放大招!全球市场应声跳水...

成方街哨兵
2024-06-08 00:22:34
中国卫星立大功,曝美航母“挨打”后画面,美军被迫解释越描越黑

中国卫星立大功,曝美航母“挨打”后画面,美军被迫解释越描越黑

北纬的咖啡豆
2024-06-05 18:50:16
2024-06-08 04:04:49
动力节点Java培训
动力节点Java培训
动力节点专注Java培训事业
1365文章数 36关注度
往期回顾 全部

科技要闻

6家大模型抢答高考作文,谁是你心中的Top1

头条要闻

云南省镇雄县一煤矿发生事故致1死3伤 还有2人失联

头条要闻

云南省镇雄县一煤矿发生事故致1死3伤 还有2人失联

体育要闻

优势在我?中国足球有自己的节奏

娱乐要闻

汤唯抵达巴黎将担任奥运火炬手

财经要闻

身陷退市股的投资者:我的钱瞬间没了

汽车要闻

2.0T混动售20.98万元起 福特蒙迪欧运动版上市

态度原创

房产
艺术
数码
家居
公开课

房产要闻

顶流地段+顶级户型!香港半山豪宅,已成为高净值人群的资产压舱石!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

数码要闻

曝苹果 iPhone 16/Pro 系列 OLED 屏再次由三星、LG 显示包揽

家居要闻

柔和婉转 让阳光洒满空间

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版