我正在浏览一些旧代码并发现以下内容:
public class MyClass implements Cloneable {
public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException ex) {
}
return o;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了Object.clone()上的javadocs,我正在试图找出为什么这个问题就在那里.我的意思是,我明白它必须在那里,因为Object.clone()会抛出它,但是什么时候它会到达那里,如果我只是默认扩展Object,这个类正在实现Cloneable?如果这个类被扩展并且子类没有实现Cloneable,它的用途是什么?
那么可以将捕获块留空吗?
Jon*_*eet 33
不,不要把它留空.记录并抛出一个RuntimeException.总是对你认为不可能的事情这样做 - 这样,如果不可能最终发生,它被视为一个意外的错误(它是),而不仅仅是返回null,好像没有发生任何坏事.
不可否认,我真的不希望你看到它,但上面是处理你不应该看到的错误的一般方法...
如果您重新抛出异常,则没有问题。您的对象 MyClass 永远不会抛出 CloneNotSupportedEx 因为它仅在未实现接口时才会抛出。请参阅可克隆的 javadoc
按照惯例,实现此接口的类应该使用公共方法覆盖 Object.clone(受保护)。有关覆盖此方法的详细信息,请参阅 {@link java.lang.Object#clone()}。
请注意,这个接口并没有包含clone方法。因此,不能仅仅凭借对象实现了这个接口就克隆一个对象。即使以反射方式调用 clone 方法,也不能保证它会成功。
| 归档时间: |
|
| 查看次数: |
18832 次 |
| 最近记录: |