类加载机制和反射一直是java中的一个核心模块,下面我通过自己写的案例来展示通过反射来创建类对象的一个工厂。
案例代码如下:
package com.xiaomo.reflex;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class ObjectPoolFactory {
//定义一个对象池,前面是对象名,后面是实际对象
private Map<String,Object> objectPool = new HashMap<>();
//定义一个创建对象的方法
//该方法只要传入一个字符串类名,程序可以根据该类名生成Java对象
private Object createObject(String clazzName) throws IllegalAccessException,ClassNotFoundException, InstantiationException, IllegalAccessException{
//根据字符串来获取对象的Class对象
Class<?> clazz = Class.forName(clazzName);
//使用clazz对应类的默认构造器创建实例
return clazz.newInstance();
}
public void initPool(String fileName) throws IllegalAccessException, ClassNotFoundException, InstantiationException{
try(
FileInputStream fis = new FileInputStream(fileName);
){
Properties props = new Properties();
props.load(fis);
for(String name:props.stringPropertyNames()){
//每取出一对key-value对,就根据value创建一个对象
//调用createObject()创建对象,并将对象添加到对象池中
objectPool.put(name, createObject(props.getProperty(name)));
}
}catch (IOException e) {
e.printStackTrace();
System.out.println("读取"+fileName+"异常");
}
}
public Object getObject(String name){
//从objectPool中取出指定那么对应的对象
return objectPool.get(name);
}
public static void main(String[] args) throws Exception {
ObjectPoolFactory pf = new ObjectPoolFactory();
pf.initPool("e:/reflex.txt");
System.out.println(pf.getObject("date"));
System.out.println(pf.getObject("jFrame"));
}
}
运行结果:
Fri Oct 11 11:51:28 CST 2013
javax.swing.JFrame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,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]
出处:http://blog.csdn.net/cl05300629/article/details/12614245 作者:伫望碧落
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
java反射java反射java反射java反射java反射
Java反射
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射demo
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
java反射理论及实现
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!