反射机制经典例子

一个经典的反射应用场景:

1. 三个Java文件,分别叫servlet1.java,servlet2.java,servlet3.java,每个文件中各自有一个构造函数,当类被用来new一个新对象时,会自动调用这个构造函数

//servlet1.java
public class servlet1
{
   public  servlet1()
   {
       System.out.println("我是servlet1");
   }
}

//servlet2.java

public class servlet2
{
    public  servlet2()
    {
        System.out.println("我是servlet2");
    }
}

//servlet3.java 

public class servlet3
{
    public servlet3()
    {
        System.out.println("我是servlet3");
    }
}

2.然后有一个配置文件.properties文件 三个key-value键值对

aaaa=servlet1
bbbb=servlet2
cccc=servlet3

3.通过反射机制来创建对象

     
        Scanner s=new Scanner(System.in);
        String key=s.nextLine();//输入key,然后后面就可以用Propertie对象查找

        //将properties文件里的键值对添加到Properties对象(一个hashmap)里
        FileReader reader=new FileReader("D:\\桌面\\Java代码
                                             \\djbServlet\\test.properties");
        Properties pro=new Properties();
        pro.load(reader);
        reader.close();

        String className=pro.getProperty(key);//通过key得到对应的那个servlet名字
                                                (字符串)

        //通过反射机制创建对象
        Class a=Class.forName(className);
        Object b=a.newInstance();

最后如果你输入 aaaa,运行程序会输出:我是servlet1(因为创建了一个servlet1类的对象)

最后如果你输入 bbbb,运行程序会输出:我是servlet2(因为创建了一个servlet2类的对象)

最后如果你输入cccc,运行程序会输出:我是servlet3(因为创建了一个servlet3类的对象)

总结:

比如有一个Person类,我利用这个类new了一个对象xiaoming

然后有个hashmap里面有这样一个键值对(key和value都是字符串String):xiaoming=Person,表示小明这个对象是属于Person类的

String value=map.get(key);//key是“xiaoming”,value是“Person”,都是字符串

Class a=Class.forName(value);

Object  xiaohong=a.newInstance();//成功的new了一个Person类对象xiaohong

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值