通过反射操作对象

一、通过反射操作对象

Class对象可以获得该类里包括的方法(由Method对象表示)、构造器(由Constructor对象表示)、Field(由Field对象表示),这三个类都定义在java.lang.reflect包下,并实现了java.lang.reflect.Member接口,程序可以通过Method对象来执行对应的方法,通过Constructor对象来调用对应的构造器创建对象,能通过Field对象直接访问并修改对象的属性值。

 

二、创建对象

         通过反射来生成对象有如下两种方式:

1、  使用Class对象的newInstance()方法来创建该Class对象的实例,而执行newInstance()方法时实际上是利用默认构造器来创建该类的实例。

2、  先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建该Class对象实例。即通过指定构造器来创建实例。

 

package Demo18;

 

import java.io.FileInputStream;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

 

importorg.eclipse.jdt.internal.compiler.ast.ThisReference;

 

public class ObjectPoolFactory {

         privateMap<String,Object> objectPool = new HashMap<String,Object>();

        

         privateObject createObject(String className)

                            throwsClassNotFoundException, InstantiationException,

                            IllegalAccessException{

                   Classclazz = Class.forName(className);

                   returnclazz.newInstance();

         }

        

         publicvoid initPool(String fileName) throws ClassNotFoundException,

                            InstantiationException,IllegalAccessException {

                   FileInputStreamfis = null;

                   try{

                            fis= new FileInputStream(fileName);

                            Propertiesprops = new Properties();

                            props.load(fis);

                            for(String name : props.stringPropertyNames()) {

                                     objectPool

                                                        .put(name,this.createObject(props.getProperty(name)));

                            }

                   }catch (IOException e) {

                            System.out.println("读取" +fileName + "异常");

                   }finally {

                            try{

                                     if(fis != null) {

                                               fis.close();

                                     }

                            }catch (IOException e2) {

                                     e2.printStackTrace();

                            }

                   }

         }

        

         publicObject getObject(String name){

                   returnobjectPool.get(name);

         }

        

         publicstatic void main(String[] args)

                   throwsClassNotFoundException, InstantiationException, IllegalAccessException

         {

                   ObjectPoolFactorypf = new ObjectPoolFactory();

                   pf.initPool("E:/obj.txt");

                   System.out.println(pf.getObject("a"));

         }

        

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先了解一下flexBuilder FlexBuilder 2.0 是建立在 eclipse 3.1基础上的 FlexBuilder 3.2.1 是建立在eclipse 3.2.1基础上的 所以要想支持vss 首先要准备eclipse 3.1 或者 eclipse3.2.1 就看你用什么版本的flexbuilder FlexBuilder 3使用 vss1.6.1; FlashBuilder 4使用 vss 1.6.2; 1. 下下载一个vss插件 最新版本是1.6.2 下载地址:http://sourceforge.net/projects/vssplugin/ (或者http://download.csdn.net/detail/ch_kexin/4925652) 放入 flexbuilder 目录的plugin 目录下 打开flexbuilder 很多人都会发现不能用 当然这也是让很多人忘而却步的地方 2. 为什么不能用? 原因是flexbuilder中 精简了eclipse 中的一些组建 ,vss插件又需要,怎么办? 刚准备的eclipse 就发挥了用处 下载一个eclipse (请下载对应的版本) 然后解开 将eclipse 的plugin 目录下的 org.eclipse.jdt.* 的目录和文件 全部拷贝到 flexbuilder 的plugin (若为myEclipse则是将myEclipse下eclipse\plugins) flashbuilder也一样 ----下面是在FlexBuilder中配置VSS ------- 1. 首先绑定项目到VSS。就算打开的项目是从VSS里获取的,第一次打开也需要手动绑定。选中图中最后一个菜单中的选项:Share Project进入新界面后,选中VSS Configuration Wizard进入如下界面。 2. 填上客户端用户名、密码、服务器端VSS目录、项目目录、项目在VSS里的目录。 VSS Repository supports multiple checkouts.不选,此项是VSS支持多人同时签出。根据实际情况决定是否选中。 3.单击Finish。配置VSS完毕。 4.配置完毕。 VSS配置完成后。项目并未与VSS有任何关联,此时需要 Update State来关联到VSS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值