我的工厂类有一个类的集合,我不想要那种依赖,当我添加一个 SuperClass 的子类时,我需要工厂文件保持不变
编辑: 我的工厂类必须返回父类(super class)的所有子类实例,但我不能拥有它们的集合(或它们的名称),因为这意味着每当我添加新的子类时我都必须更改工厂文件!
package reflection;
public final class Factory {
private final SuperClass[] subclasses_collection
= {new SubClass1(), new SubClass2() /* ...SubClassN */};
public final SuperClass[] getAllSubClasses() {
return subclasses_collection;
}
}
最佳答案
代替
new SubClass1()
做这样的事情
Class clazz = Class.forName("SubClass1");
Object subclass1 = clazz.newInstance();
如果您想将参数传递给构造函数,请参阅本文的创建新对象部分 http://java.sun.com/developer/technicalArticles/ALT/Reflection/
关于Java:带反射的工厂方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208606/