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