我理解Java克隆如何工作以及反对使用它的论据.让我们说无论如何我已经死了.
为方便起见,我想为类Foo编写一个克隆方法,如下所示:
@Override
public Foo clone(){
Foo f = (Foo)super.clone();
//Replace mutable fields
return f;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这将是安全的.但是,我注意到API中的Cloneable类不会这样做.这有什么原因,这是不好的风格?
Kay*_*man 17
回到Java 5之前,根本不允许协变返回类型,因此Foo clone()甚至不会编译.由于Cloneable很久以前写过很多课程,这可能是大部分案例的原因.
我怀疑较新的课程并不仅仅因为clone()已知非常少,而且当人们很少使用它时,他们甚至不认为他们可以施展它.他们找到了一些"如何实现clone()"的问题,并以老式的方式编写代码.
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |