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

因为自己也是新手,有错误还请指出,谢谢!
用一下本校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(类名) 进行判断后创建相应的对象,若类过多,则较麻烦,工厂类也很臃肿。
但反射开销也比较大,所以就要依情况而看了~

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

相关文章: