我如何才能向中添加一堆类ArrayList<MyBaseClass>
,然后再从中检索一个类(派生自,但不是MyBaseClass
),ArrayList
并使用它来生成实际检索到的类的新对象(即,MyBaseClass
因为那不是抽象的)
所有需要添加的类都源自同一个 抽象 基类(MyBaseClass
)
我真的想不出另一种方法来实现自己的目标,所以希望这是可能的…?
为了防止使用反射,您可能正在寻找抽象工厂模式。这是一个简单的示例,说明如何使用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 {
}
问题内容: 我研究过Java是按值传递对象引用,并且为了创建对象的本地副本,我可以执行clone()或copy-constructor。我还查看了深/浅副本以及关于stackoverflow的几篇文章。 现在我看一个例子: 我只读过几篇文章提到ArrayList实现可克隆,但是并没有真正说出如果类型为List而不是不实现可克隆的ArrayList,那么如何制作“列表”的本地副本。 如果“列表”是A
问题内容: 我有一些数据结构,我想将其中一个用作临时结构,将另一个用作非临时结构。 现在的问题当然是实际上只是指向,因此一旦清除,也是如此。 如何在使用Java时保留值? 问题答案: 您可以使用以下技巧: 或使用 您可以在此处获取有关clone()方法的一些信息 但是您应该记住,所有这些方式都会给您 List 的副本,而不是其所有元素。因此,如果您更改复制的列表中的元素之一,则它也将在原始列表中进
我有一个名为TwoNumbers的类,它创建一个包含两个数字的对象。我创建了一个包含此对象的ArrayList<>,并希望将这些对象复制到新的ArrayList中。 问题是我只想将不同的对象复制到新的ArrayList中。当对象内部的数字可能相同时,Java将每个对象视为不同的对象,我不知道如何阻止它复制每个对象。 我的TwoNumber类:公共TwoNumbers(int n1,int n2)
问题内容: 我有一个如下的示例程序: 我以为我可以修改其中的项目,而不会影响其中的这些项目。但是我错了。 如何制作的单独副本/克隆? 谢谢 问题答案: 是的,这是正确的- 您需要实现(或另一种合适的机制来复制对象,这被许多程序员认为“破坏了”)。您的方法应该对对象内所有可变字段进行深层复制。这样,对克隆对象的修改将不会影响原始对象。 在示例代码中,您正在创建第二个代码,并使用 对相同对象的引用 填
问题内容: ArrayList在内部使用什么数据结构? 问题答案: 内部使用。 在向中添加项目时,列表会检查后备阵列是否还有剩余空间。如果有空间,则将新项目添加到下一个空白处。如果没有空间,则会创建一个更大的新阵列,并将旧阵列复制到新阵列中。 现在,还有更多空间,新元素将添加到下一个空白空间。 由于人们真的很喜欢源代码: 直接跳出JDK。
问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 如何克隆ArrayList并克隆其内容? 试图复制一个ArrayList。基础对象很简单,包含Strings,ints,BigDecimals,Dates和DateTime对象。如何确保对新ArrayList所做的修改不会反映在旧ArrayList中? 干杯,P 问题答案: 在添加对象之前先对其进行克隆。例如,代替 假设已正确覆