栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

反射机制经典例子

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反射机制经典例子

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号