反射机制和配置文件的用法
2013-06-01 21:38
225 查看
package com.fanShe; import java.util.*; import java.io.*; import java.lang.reflect.Method; import java.lang.String; import javax.swing.*; public class ExtendobjectPoolFactory extends JFrame{ /***通过反射机制 从一个文件中取出 已经写好的类 a=java.util.Date b=javax.swing.JFrame * @param args * 并使用文件中的方法 * * 程序的文件c:/obj.txt 是: * * a=javax.swing.JFrame b=java.lang.String #set the title of a a%visible=true 最后文件可以生成一个JFrame窗口 但是没有大小 * */ private Map objectPool=new HashMap<String , Object>(); //properties这个类继承了HashMap private Properties config=new Properties(); //从文件中初始化Properties对象 public void init(String fileName){ try { //从文件中取出 文件中的‘=‘为界线 一个是键 一个是值 FileInputStream fis=new FileInputStream(fileName); config.load(fis); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //定义一个创建对象的方法 //可以生成以类名 的 java对象 private Object createObject(String clazzName) throws Exception{ Class clazz=Class.forName(clazzName); //返回对应类的默认构造Class对象 return clazz.newInstance(); } //从文件中初始化 对象池 //它根据配置文件来创建对象 public void initPool() throws Exception{ for(String name : config.stringPropertyNames()){ System.out.println(name); if(!name.contains("%")){ objectPool.put(name, createObject(config.getProperty(name))); } } } //从文件中初始化 对象池 //它根据配置文件来创建对象 public void initProperty() throws Exception{ for(String name : config.stringPropertyNames()){ if(name.contains("%")){ String[] objAndProp=name.split("%"); Object target =getObject(objAndProp[0]); String medName ="set"+objAndProp[1].substring(0,1).toUpperCase() +objAndProp[1].substring(1); //System.out.println("medName = "+medName); Class targetClass=target.getClass(); System.out.println("hrear of target = "+target); //System.out.println("class = "+targetClass); //获得该属性对应的set方法 Method mtd=targetClass.getMethod(medName, boolean.class); //通过Method的invoke方法执行set方法 //System.out.println("config.getProperty = "+config.getProperty(name)); boolean b=Boolean.valueOf("true"); //System.out.println("b===" + String.valueOf(b)); //System.out.println("String = "+target+" boolean = "+String.valueOf(b)); mtd.invoke(target,b); } } } public Object getObject(String name){ return objectPool.get(name); } public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub ExtendobjectPoolFactory e=new ExtendobjectPoolFactory(); e.init("c:/obj.txt"); e.initPool(); e.initProperty(); System.out.println("a"); } public ExtendobjectPoolFactory(){ } }
相关文章推荐
- C# 静态工厂利用反射机制动态构建配置文件中 所配置的类的对象
- C# 利用反射机制动态构建配置文件中类的对象
- 模式开发—运用配置文件和反射机制重构客户端代码
- 反射机制与配置文件结合的工厂设计模式
- 利用反射机制通过配置文件在对象池创建对象
- 用反射机制简单应用配置文件
- 利用反射机制通过配置文件在对象池创建对象
- 使用反射机制动态加载配置文件
- [Java 15 反射机制 ] 工厂模式与 properties 读取配置文件
- 中等的I/O读写技术,与反射、配置文件结合
- 三层架构实现登录(工厂+反射+配置文件)
- ibatis配置xml文件中CDATA的用法
- Spring原理之通过反射+配置文件生成对象池
- andorid 配置文件中的meta—data的用法
- 反射通过配置文件运行
- Log4j日志输出方式配置文件log4j.properties用法个人见解
- mybatis的sql的xml的配置文件中<![CDATA[ ]]>的用法。
- 掌握 .NET 1.1 的配置文件用法
- 反射机制的基本用法
- 结合配置文件、反射完善控制反转(IoC)、依赖注入(DI)