在《java 编程思想》里面有这样一句话:将类设为final可禁止克隆的发生。由于Singleton是从Object直接继承的,所以clone()方法会保持protected(受保护)属性,不能够使用它(强行使用会造成编译时错误)。
为什么在Singleton里面clone()方法保持了Object类的protected属性之后,这个类就不能使用clone()方法,从而做到禁止克隆了呢?
一直没有想明白怎么回事?
为什么在Singleton里面clone()方法保持了Object类的protected属性之后,这个类就不能使用clone()方法,从而做到禁止克隆了呢?
一直没有想明白怎么回事?
解决方案 »
- 关于java多线程设计问题,关键字:返回值,面向对象,面向过程,效率
- getGraphics()方法的使用
- 急:java socket telnet 到linux系统,程序中如何发送键盘控制命令?比如想实现ctrl+space 发送给服务器
- 关于基本数据类型的问题
- 请问大虾们什么情况下定义的类需要实现serializable接口啊
- 由Client端应用程序通过HTTP上传文件到服务器
- 提问:关于javadoc
- JAVA中关于在构造函数中调用构造函数的问题????????
- 一个不错的Java论坛
- 高分挑错!高手快来出招啊。。。。。。
- 一道正则表达式的简单问题
- 我用java编了一个三重密码验证,请各位高手看一下哪里还需要改进
您说的那个类里面好像没有clone()这个方法
从没听说过,估计是说一个non-cloneable的类,final以后可以禁止克隆吧?估计中文翻译有问题??也许是上下文不全...
我猜原意也许是:一个类本身由于只是继承了Object的protected的clone,所以是non-cloneable的,如果你不把它设为final,该类使用者有可能,继承该类并implement Cloneable...总之一个cloneable的final类,当然肯定是可以clone的。
lz可以自己试一下 像public final class DemoClass implements Cloneable 的类肯定是可以clone的,当然你得重载一个public的clone.