【发布时间】:2010-12-13 22:49:53
【问题描述】:
我快速浏览了建议的“相关问题”,但找不到与我所问问题直接相关的问题。即使有,我仍然很感激您对最佳方式的意见。
首先是一些上下文。
我正在扩展一个 Java 应用程序,我有以下接口和类:
public interface Mapper {
public void foo();
}
public class SomeGrammar implements Mapper {
public SomeGrammar() {}
public SomeGrammar(SomeGrammar toCopy) {
//Copy specific fields
}
public void foo() {}
}
我正在使用的应用程序在构建时只考虑了一种语法类型,SomeGrammar,因此SomeGrammar 类贯穿整个应用程序。
SomeGrammar 对象通常使用复制构造函数进行复制:
SomeGrammar aGrammar = new SomeGrammar();
SomeGrammar newGrammar = new SomeGrammar(aGrammar);
我正在尝试实现新的语法类型。所以我打算把核心方法拉出来并实现一个Grammar接口,甚至将这些方法合并到Mapper接口中。所以所有的语法类都会实现这个接口。
无论如何,我的问题是,替换上述行的最佳方法是什么,以便我可以概括复制当前恰好被接口类型引用的任何语法对象?
显然我做不到
Grammar newGrammar = new Grammar(aGrammar);
因为Grammar 是接口的类型,而new Grammar(aGrammar) 没有意义。我想我可以在我的界面中添加一个克隆方法来代替复制构造函数,但正如我之前所说,我很感谢你对此事的看法。
提前致谢,
欧文
【问题讨论】: