java - 多个实例而不是接口(interface)副本

标签 java

所以这可能有点难以解释......

目前我这样做:

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/

相关文章:

java - 如何在不使用 LinkedList 方法的情况下设置列表中的元素

java - 是否可以禁用 Wicket DropDownChoice 中的某些项目?

java.util.regex.PatternSyntaxException : Dangling meta character '?'

java - Java 中处理列表时的多线程性能

java - 一种查找 Java 对象初始化为什么而不是声明类型的方法?

java - 无法理解 docs.oracle 上 Java Map 接口(interface)的一部分

Java序列化导致并发修改异常

java - 这个 ANT 版本是什么?

java - 具有 HTML 风格语法的编程语言

java - 在 Java 中对字符串数组进行快速排序?