Java 中 如果clone为什么必须实现Cloneable接口(已知会抛出CloneNotSupportedException异常)
Cloneable中什么方法也没有,它仅仅是个标识接口.这个标识在什么地方会起到作用? 是如何起到作用?
[quote]Java 中 如果clone为什么必须实现Cloneable接口[/quote]
Cloneabel接口的目的是作为对象的一个mixin接口(mixin接口是为了说明自己可以提供某些方法。),用来说明你的对象是允许复制。
[quote]已知会抛出CloneNotSupportedException异常[/quote]
[quote]是如何起到作用?[/quote]
如果一个类实现了Cloneable,那么对象的clone方法返回这个对象的逐域拷贝,否则的话,就会抛出你那个异常。
在je里面找了一上。[url]http://onlylove.iteye.com/blog/265113[/url]
这个好像有你需要的更进一步的东西,偶没认真看了。 :lol:
我个人认为跟serialize 是一个道理, 防止用户不知情的情况下, 出此类问题的bug. 底层在复制的时候, 也许能起到检查的作用。
1 Cloneable是标示接口与java.io.Serializable类似,用于告知JVM该对象实现clone。并且super.clone()可以返回一个复制。
2 很多时候,会把protected的clone方法修改为public,暴露给其他人可以使用
详细信息,建议仔细阅读JDK的文档