如何解决具有Java接口的复制构造函数
| 我有一个具有接口集合的类,我需要克隆此对象。我不想使用克隆接口,并且不想使用复制构造函数。我做了一些谷歌搜索,似乎找不到答案。我意识到,例如,还有其他方法可以使用复制方法来实现此目的,但我宁愿不要将其添加到我的界面中。谢谢你的帮助。public Component(Component source){
for (Behavior behavior : behaviors) {
behaviors.add(new Behavior(behavior));
}}
解决方法
您不能将构造函数添加到接口。无法做到这一点。
您避免Cloneable的本能是一个很好的选择。您可能需要一个虚拟工厂方法来确定要返回的通用接口的具体类型。
,您可以:
在
Behavior
接口中添加一个copy方法,以便每个实现都可以选择返回什么(如果它是不可变的,它甚至可以是实例本身,请参见下面的第2点)。
要求ѭ1是不可变的,因此您无需复制它。不过,这很难执行。
使“ 1”成为(抽象)类,然后向其添加一个副本构造函数。但是,这可能是您的层次结构中的缺陷。
,您无法在接口中定义构造函数,因此必须使用克隆或复制方法。
,恕我直言,最干净的方法是为每个Behavior接口实现重写Object的clone()
方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。