- 浏览: 919814 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
通过JFig.jar可以实现读取配置文件,把数据保存到集合中,然后通过代理就可以实现动态加载了.
Collection类
- /**
- * @author 42087743
- * 功能:读取配置文件,将数据存储到hashmap中
- * 说明:为节约版面,省去了set和get方法
- */
- public class CollectionConfig {
- //设置xml文件中的name
- private final static String Config_Section = "collection";
- //声明存储数据的hashmap
- private static Map<String,String> hashMap = null;
- //主要方法,通过JFig读取配置文件
- public static Map load(String config_File){
- JFigLocator jFigLocator = new JFigLocator(config_File);
- JFigIF jFigIF = JFig.getInstance(jFigLocator);
- hashMap = new HashMap<String,String>();
- //存储数据到properties中
- Properties props = jFigIF.getSectionAsProperties(Config_Section);
- Enumeration enumeration = props.keys();
- //迭代数据存储到hashmap中
- while(enumeration.hasMoreElements()){
- String key = (String) enumeration.nextElement();
- String value = (String) props.get(key);
- hashMap.put(key, value);
- }
- return hashMap;
- }
- }
/** * @author 42087743 * 功能:读取配置文件,将数据存储到hashmap中 * 说明:为节约版面,省去了set和get方法 */ public class CollectionConfig { //设置xml文件中的name private final static String Config_Section = "collection"; //声明存储数据的hashmap private static Map<String,String> hashMap = null; //主要方法,通过JFig读取配置文件 public static Map load(String config_File){ JFigLocator jFigLocator = new JFigLocator(config_File); JFigIF jFigIF = JFig.getInstance(jFigLocator); hashMap = new HashMap<String,String>(); //存储数据到properties中 Properties props = jFigIF.getSectionAsProperties(Config_Section); Enumeration enumeration = props.keys(); //迭代数据存储到hashmap中 while(enumeration.hasMoreElements()){ String key = (String) enumeration.nextElement(); String value = (String) props.get(key); hashMap.put(key, value); } return hashMap; } }
Proxy类
- /**
- * @author 42087743
- * 功能:代理,为用户屏蔽内部代码,方便用户得到实例
- */
- public class Proxy {
- // 创建对象hashmap,得到读取配置文件的hashmap
- private static Map hashMap = CollectionConfig.getHashMap();
- // 用户输入key,返回给用户value
- public static Object getInstance(String key) throws ClassNotFoundException {
- Object value = null;
- value = Class.forName(hashMap.get(key).toString());
- return value;
- }
- }
/** * @author 42087743 * 功能:代理,为用户屏蔽内部代码,方便用户得到实例 */ public class Proxy { // 创建对象hashmap,得到读取配置文件的hashmap private static Map hashMap = CollectionConfig.getHashMap(); // 用户输入key,返回给用户value public static Object getInstance(String key) throws ClassNotFoundException { Object value = null; value = Class.forName(hashMap.get(key).toString()); return value; } }
config.xml
- <?xml version="1.0" encoding="utf-8"?>
- <CONFIGURATION>
- <section name="collection">
- <entry key="java.util.List" value="java.util.ArrayList" />
- <entry key="java.util.Set" value="java.util.HashSet" />
- <entry key="java.util.Map" value="java.util.HashMap" />
- </section>
- </CONFIGURATION>
<?xml version="1.0" encoding="utf-8"?> <CONFIGURATION> <section name="collection"> <entry key="java.util.List" value="java.util.ArrayList" /> <entry key="java.util.Set" value="java.util.HashSet" /> <entry key="java.util.Map" value="java.util.HashMap" /> </section> </CONFIGURATION>
Test类
- /**
- * @author 42087743
- * 功能:测试,读取指定的配置文件,动态加载它,最后运行它的方法
- */
- public class Test {
- public static void main(String[] args) throws ClassNotFoundException,
- InstantiationException, IllegalAccessException,
- IllegalArgumentException, InvocationTargetException {
- String key = "java.util.Map";
- // 读取配置文件
- CollectionConfig.load("com/jfig/config.xml");
- // 加载类
- Class o = (Class) Proxy.getInstance(key);
- // 获得实例
- Object ob = o.newInstance();
- // 得到方法数组
- Method[] method = o.getMethods();
- // 迭代,匹配方法名,最后调用该方法
- for (int i = 0; i < method.length; i++) {
- // 将==先进行比较,可以改善性能,因为==比equals速度快
- if ("put" == method[i].getName()
- || "put".equals(method[i].getName())) {
- // 将所有方法名放到集合中去
- for (int j = 0; j < method.length; j++) {
- method[i].invoke(ob,
- new Object[] { j, method[j].toString() });
- }
- // 直接跳出循环,无须继续循环下去
- break;
- }
- }
- for (int i = 0; i < method.length; i++) {
- if ("size" == method[i].getName()
- || "size".equals(method[i].getName())) {
- System.out.println("集合的大小是:" + method[i].invoke(ob));
- break;
- }
- }
- }
- }
/**
* @author 42087743
* 功能:测试,读取指定的配置文件,动态加载它,最后运行它的方法
*/
public class Test {
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
String key = "java.util.Map";
// 读取配置文件
CollectionConfig.load("com/jfig/config.xml");
// 加载类
Class o = (Class) Proxy.getInstance(key);
// 获得实例
Object ob = o.newInstance();
// 得到方法数组
Method[] method = o.getMethods();
// 迭代,匹配方法名,最后调用该方法
for (int i = 0; i < method.length; i++) {
// 将==先进行比较,可以改善性能,因为==比equals速度快
if ("put" == method[i].getName()
|| "put".equals(method[i].getName())) {
// 将所有方法名放到集合中去
for (int j = 0; j < method.length; j++) {
method[i].invoke(ob,
new Object[] { j, method[j].toString() });
}
// 直接跳出循环,无须继续循环下去
break;
}
}
for (int i = 0; i < method.length; i++) {
if ("size" == method[i].getName()
|| "size".equals(method[i].getName())) {
System.out.println("集合的大小是:" + method[i].invoke(ob));
break;
}
}
}
}
后来想拓展下,进而实现spring的IOP功能,发现没有那么简单,首先就因为class类型没有办法转型到其他的常用类型,看来还需要继续研究.
发表评论
-
iPhone5s插件推荐 越狱后必装的50个插件
2014-12-31 16:58 15781. Activator (没有之一的强大手势操作软件)2. ... -
JS automation 环境迁移备注
2014-11-15 11:17 0此次迁移涉及的问题记录如下: 1) Jenkins 直接把 ... -
MacOS 怎么写NFS移动硬盘
2014-11-14 19:13 27051、打开命令行终端。 2、插上移动硬盘,这时候你在Find ... -
How can I resize a partition with Disk Utility (Bottom-up)
2014-10-10 14:30 490Create a new volume in the bla ... -
Outlook 邮件提醒长期显示
2012-08-30 10:38 1375I thought it was one of th ... -
chrome 背景色的设置
2012-07-17 09:56 3033最近换了浏览器,开始喜欢上chrome。 为了保护眼睛 ... -
日常生活中练习右脑
2012-07-12 10:16 1270成年人在日常琐细的生活中,同样可以采取各种方法锻炼右脑。 ... -
大公司面试集锦
2012-06-18 10:23 1379微软十五道面试题 1、有一个整数数组,请求出两两之差绝对值最 ... -
商务英语中的委婉表达
2012-06-18 10:19 12781. 委婉: 1) 动词:think、hope、re ... -
放松颈椎的几个动作
2012-05-29 12:41 1200随时放松颈部肌肉 ... -
drupal简单的体验
2012-05-24 15:41 886第一步: 到 drupal.org下下载最新的Drupal ... -
HtmlParser进行解析原理
2012-05-23 13:48 1183这两天准备做一些网站编程的工作,于是对HtmlParse小研究 ... -
使用HtmlParser提取HTML文本块
2012-05-23 13:46 1477听人介绍说HtmlParser(Java版本)在网页预处理 ... -
[zz] Opencms vs Magnolia
2012-05-22 10:35 2023最近一直在挑选CMS,Opencms和Magnolia是考察的 ... -
面向对象的三个基本特征
2012-04-25 14:56 831面向对象的三个基本特征是:封装、继承、多态。 ... -
Maven vs Ant
2012-04-23 14:35 1205Ant 将提供了很多可以重用的task,例如 copy, mo ... -
zz智力题
2012-03-26 22:50 12791、有两根不均匀分布 ... -
几种开源Portal的简单介绍分析
2012-02-21 22:42 2467主要包括:Pluto,Liferay,eXo,Jetsp ... -
Portal top ten
2012-02-21 22:37 1004TOP1 独立网店系统 Sh ... -
英文面试须知
2012-02-16 15:11 991英语面试需要好好准备 ...
相关推荐
2. `JFig Preferences`:这个名字暗示这可能是一个配置文件或设置文件,用于存储用户偏好、选项或者程序的默认设置。在许多软件中,用户可以通过修改这些设置来个性化他们的体验,例如改变界面主题、调整行为或设定...
7. **调试与运行**:用户可以通过集成开发环境(IDE)如Eclipse或IntelliJ IDEA导入“JFigStudy”项目,配置好JFig库后,编译并运行源代码以查看示例应用的效果。 8. **学习资源**:除了提供的示例工程,学习JFig还...
Windows下使用*.ini作为配置文件,Java...JFig就是这样一个读取配置信息的工具。 学习步骤: 1.把本包拷贝下来 2.使用eclipse或者idea打开, 3.把Jar包添加到系统中 4.test目录是我自己加的,运行看看,就知道其原理了
JFig 为开发人员提供了一个简单而强大的工具来管理他们的应用程序配置。 使用分层 xml 文件和替换变量的组合,它使开发人员能够: 1. 将应用程序配置存储在一个通用的 XML 文件存储库中 2. 使用一个通用、方便的界面...
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
这些文件包含了用于分析雷达波形的图形用户界面(GUI)设计以及相关的算法实现。 【描述】"reviews radar waveforms, including CW, pulsed, and LFM, High" 指出该压缩包中的内容涵盖了雷达信号的不同类型,包括...