所以这可能有点难以解释......
目前我这样做:
SomeInterface xyz1 = SomeInterface.method(data);
SomeInterfaceCopy xyz2 = SomeInterfaceCopy.method(data);
我在这里所做的是制作一个精确的副本 'SomeInterface' 的每个类和接口(interface), 因为我需要两个相同的“实例” 界面。
我想做的是这样的:
SomeInterface xyz1 = SomeInterface.method(data);
SomeInterface xyz2 = SomeInterface.method(data);
这将允许我拥有两个以上的“实例”, 不可能使用 atm,因为 xyz1 和 xyz2 基本上是 副本(同一实例中的所有对象) 彼此而不是实例。
我将如何实现这一目标?
谢谢:)
编辑:谢谢@PeterLawrey,不幸的是它不能解决我的具体问题,但这是正确的答案
最佳答案
假设您有两个相同的接口(interface),但由于某种原因,您不能轻易删除重复的接口(interface)而不使用它。
SomeInterface xyz1 = SomeInterface.method(data);
SomeInterfaceCopy xyz2 = SomeInterfaceCopy.method(data);
最简单的更改是使副本继承原始版本。
interface SomeInterfaceCopy extends SomeInterface {
这意味着您可以编写其中之一
SomeInterfaceCopy xyz2 = SomeInterfaceCopy.method(data);
或
SomeInterface xyz2 = SomeInterfaceCopy.method(data);
如果您根本无法更改代码,而是想要逐个字段进行深层复制,则可以查看原始对象的序列化并将其反序列化为目标类型。
could you give an example of calling new twice please?
假设class SomeInterfaceImpl实现了SomeInterface
,您可以使用它创建两个实例
SomeInterface xyz1 = new SomeInterfaceImpl(); // one instance
SomeInterface xyz2 = new SomeInterfaceImpl(); // 2nd instance.
关于java - 多个实例而不是接口(interface)副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117710/