一尘不染

如何制作一个ArrayList类?

java

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

所有需要添加的类都源自同一个 抽象 基类(MyBaseClass

我真的想不出另一种方法来实现自己的目标,所以希望这是可能的…?


阅读 155

收藏
2020-12-03

共1个答案

一尘不染

为了防止使用反射,您可能正在寻找抽象工厂模式。这是一个简单的示例,说明如何使用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 {
}
2020-12-03