Java:带反射的工厂方法?

标签 java reflection factory factory-pattern

我的工厂类有一个类的集合,我不想要那种依赖,当我添加一个 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/

相关文章:

c# - 泛型 Func<T> 的运行时创建

java - 使用 HashMap 和反射来调用具有可变参数类型的方法

dart - 构造函数不能有类型参数。dart(type_parameter_on_constructor)

Spring - 简单地创建Supplier<MyPrototypeBean>

java - 使用liferay和icefaces的Portlet数据共享

java - Java 中的简单重构(基础)

java - 为什么我不能打开 JBoss vfs :/URL?

java - SharedPreferences不覆盖数据

c# - 反射和继承问题c#

javascript - 部署时 AngularJS 应用程序未获取数据