一个很简单的反射实例

一个最简单的反射实列代码

因为自己也是新手,有错误还请指出,谢谢!
用一下本校java讲继承时的例子

定义接口
public interface Animal {
    public abstract void voice();
}
实现类
public class Cat implements Animal {
    @Override
    public void voice() {
        System.out.println("喵喵喵");
    }
}
public class Dog implements Animal{
    @Override
    public void voice() {
        System.out.println("汪汪汪");
    }
}
一个工厂类
public class Factory {
    public static Animal getInstance(String className){
        Animal a = null;
        try {
            a = (Animal) Class.forName(className).newInstance(); //用反射创建对象
        }catch (Exception e){
            e.printStackTrace();
        }
        return a;
    }
}
测试类

只传递类名时有一个classnotfound的异常,所以这里传递的是包名加类名,

public class Test {
    public static void main(String[] args) {
        Animal a = Factory.getInstance("com.reflect.Cat");//这个时包名加类名
        a.voice();
    }
}
项目结构如下

在这里插入图片描述

运行结果:

在这里插入图片描述
工厂模式下普通情况是在工厂中用 if(类名) 进行判断后创建相应的对象,若类过多,则较麻烦,工厂类也很臃肿。
但反射开销也比较大,所以就要依情况而看了~

欢迎大家访问我的个人博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值