通过反射创建并操作对象
2014-12-24 16:59
281 查看
通过反射生成对象有两种方法:
(1)使用Class对象的newInstance()方法来创建Class对象相应的实例,这种方法使用的是默认构造器,而执行newInstance()实际上是创建了一个实例
(2)先使用Class对象获取指定的Constructor对象,再调用Contructor对象的newInstance方法 创建该Class对象对应的实例,通过这种方法可以选择使用某种类的指定构造器来创建实例
(1)使用Class对象的newInstance()方法来创建Class对象相应的实例,这种方法使用的是默认构造器,而执行newInstance()实际上是创建了一个实例
import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.io.FileInputStream; public class ObjectPoolFactory { private Map<String,Object> objectPool=new HashMap<String,Object>(); //根据字符串类名,创建一个类实例 private Object createObject(String clazzName) throws Exception{ Class<?> clazz=Class.forName(clazzName); return clazz.newInstance(); } public void initPool(String fileName) throws Exception{ FileInputStream fis=null; try{ fis=new FileInputStream(fileName); Properties props=new Properties(); props.load(fis); for(String name:props.stringPropertyNames()){ System.out.println(name); objectPool.put(name,createObject(props.getProperty(name))); } catch(Exception e){ System.out.println("fail"); } finally{ try{ if(fis!=null){fis.close();} } catch(Exception ex){ex.printStackTrace();} } } } public Object getObject(String name){ return objectPool.get(name); } public static void main(String[] args) throws Exception{ ObjectPoolFactory opf=new ObjectPoolFactory(); opf.initPool("obj.txt"); System.out.println(opf.getObject("a")); } }
(2)先使用Class对象获取指定的Constructor对象,再调用Contructor对象的newInstance方法 创建该Class对象对应的实例,通过这种方法可以选择使用某种类的指定构造器来创建实例
public class CreateJFrame { public static void main(String[] args) throws Exception { Class<?> jframeClazz=Class.forName("javax.swing.JFrame"); Constructor ctor=jframeClazz.getConstructor(String.class);
//对应的构造器 Object obj=ctor.newInstance("测试窗口"); System.out.println(obj); } }
相关文章推荐
- Java通过反射创建对象
- java通过暴力反射创建不可实例化类的对象实例
- 通过反射创建对象
- Java通过反射创建对象
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 通过eclipse方法来操作Hadoop集群上cassandra数据库(包括创建Keyspace对象以及往数据库写入数据)
- Effective STL 第7条:如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- 通过反射创建运行时类对象
- 通过Java的反射机制创建运行时类的对象并调用其结构
- Java通过反射创建对象
- 黑马程序员--09.动态与代理AOP--03【InvocationHandler接口】【通过反射创建动态代理类对象】
- protobuf在java应用中通过反射动态创建对象
- Java通过反射创建对象
- js创建子窗口,并通过子窗口操作父窗口的对象
- 利用“通过'反射方式'创建的对象”来创建对象的性能问题?
- 通过反射操作对象
- protobuf在java应用中通过反射动态创建对象(DynamicMessage)
- 利用反射机制通过配置文件在对象池创建对象
- 如何通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?
- 6.通过反射动态创建对象,获取属性,获取方法