如何制作类的ArrayList?

yco*_*omp -1 java factory class arraylist java-8

我如何添加一堆类ArrayList<MyBaseClass>,然后从中检索一个类(从中派生,但不是MyBaseClass从中),ArrayList并使用它来生成检索到的实际类的新对象(即不是MyBaseClass因为它是抽象的)

所有需要添加的类都派生自相同的抽象基类Class(MyBaseClass)

我真的想不出另一种方法来实现我想做的事情,所以希望这是可能的......?

Ste*_*ase 7

为了防止使用反射,您可能正在寻找抽象工厂模式.这是一个如何使用Java 8实现它的简单示例:

private void run() {
    List<Supplier<MyBaseClass>> factories = Arrays
            .asList(Impl1::new, Impl2::new, Impl3::new);
    List<MyBaseClass> baseClassInstances = factories.stream()
            .map(Supplier::get)
            .collect(Collectors.toList());
}

public abstract class MyBaseClass {
}

public class Impl1 extends MyBaseClass {
}

public class Impl2 extends MyBaseClass {
}

public class Impl3 extends MyBaseClass {
}
Run Code Online (Sandbox Code Playgroud)

另请参见如何根据用户选择选择应实例化哪个具体实现?