java反射机制~应用demo

本文介绍Java反射机制的应用,通过一个动物园实例展示如何利用反射机制提高程序的扩展性。当需要添加新的动物类型时,仅需修改配置文件即可,无需改动原有代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java反射机制实在运行状态中,对任意一个类,都能够知道这个类的属性和方法。
这种动态调用方法和获取信息的功能可以被称为java的反射机制。

好处显而易见,提高应用程序的扩展性。

说的通俗一点,就是你在开发时候,不知道未来可能会需要添加什么新功能,但是你又比较懒,希望添加新功能后,尽可能少的更改原代码。最好不要改变原始逻辑。那在这种,你并不知道未来会发生什么的情况下,怎么办呢,用反射。
先用图展现下反射的原理。
这里写图片描述
举个栗子:
假如你有一个动物园,你刚开办动物园的时候,动物并不多,只有一条狗。
那你这样写:

public class Zoo {
    public void run(){
        dog d = new dog();
        d.eat();
        d.sleep();
    }
}

过几天你又有一只猫,你怎么办?
那你的代码可能得这样了:

public class Zoo {
    public void run(){
        dog d = new dog();
        d.eat();
        d.sleep();

        cat c = new cat();
        c.eat();
        c.sleep();
    }
}

过几天你又有了猴子、老虎。。。又来了一百个动物,你还这样么?写一百遍?
那当然不能啊。
那么我们就可以用反射,来实现。首先你弄个接口,叫AnimalInterface,无论是狗还是猫,都是动物啊。

public interface AnimalInterface {
    public void eat();
    public void sleep();
}

然后你让狗实现这个接口。

public class dog implements AnimalInterface {
    @Override
    public void sleep() {
        System.out.println("dog sleeping...");
    }
    @Override
    public void eat() {
        System.out.println("dog eating...");
    }
}

然后,你的动物园,就可以用多态了啊。

public class Zoo {
    public void run(AnimalInterface animal){
        animal.eat();
        animal.sleep();
    }
}

这里写图片描述
配置文件里,放你需要跑的类名。以逗号隔开

list=net.hxxtest.fanshedemo.impleClass.dog,net.hxxtest.fanshedemo.impleClass.cat

下面看一下主函数

public static void main(String[] args)throws Exception{
        Zoo z = new Zoo();//创建你的动物园
        //读取配置文件
        ResourceBundle rb = ResourceBundle.getBundle("animalsFile");
        String animalList = rb.getString("list");
        String[] strArray  = animalList.split(",");
        //将你添加的动物,遍历出来
        for(int i=0;i<strArray.length;i++){
            String animalName= strArray[i];
            //找寻该动物类文件,并加载进内存,产生class对象
            Class c = Class.forName(animalName);
            //生成该动物对象
            AnimalInterface obj = (AnimalInterface)c.newInstance();
            z.run(obj);
        }
    }

代码改成这样之后,就可以保证,你新添加动物时,不用改任何代码,只需要在配置文件上,假如你新增的动物就OK了。

项目代码下载地址:https://github.com/weiaiwan/fanshedemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值