官网解释:

  This class defines a clone() method but the class doesn't implement Cloneable. There are some situations in which this is OK (e.g., you want to control how subclasses can clone themselves), but just make sure that this is what you intended.

什么代码会引起这个问题呢?先看下面:

class MyTest {
    public MyTest clone(){
        MyTest myTest = new MyTest();
        return myTest;
    }
}    

这段代码会引起FindBugs的这个警告,为什么?请看下面解释:

1.根据FindBugs的说明,如果一个类重写clone()函数,而不继承Cloneable接口,是一定有问题的,如果clone()方法只是简单进行克隆,如:new一个对象并初始化,然后返回这个新创建的对象的话,不继承Cloneable接口也是可以的。

2.如果是上面这样的话,为什么还要继承Cloneable接口呢?稍微说一下,Cloneable接口是不包含任何方法的!其实这个接口仅仅是一个标志,而且这个标志也仅仅是针对Object类中clone()方法的,如果clone类没有实现 Cloneable接口,并调用了Object的clone()方法(也就是调用了super.Clone()方法),那么Object的clone() 方法就会抛出CloneNotSupportedException异常。Cloneable用法

3.所以这里建议是:规范写法,如果重写clone(),最好继承Cloneable接口。

class MyTest implements Cloneable{
    public MyTest clone(){
        MyTest myTest = new MyTest();
        return myTest;
    }
}    

最新文章

  1. ASP.NET Web API 配置 JSONP
  2. ROCKETMQ源码分析笔记2:client
  3. DOM--4 响应用户操作和事件(1)
  4. ORACLE 學習筆記
  5. MonkeyRunner学习(2)常用命令
  6. 【WildCard Matching】cpp
  7. [转]微软联合CSDN英雄在线编程大赛
  8. 李洪强iOS开发支付集成之支付宝支付
  9. Web API 依赖注入与扩展
  10. WIN8+VS2013编写发布WCF之一(编写)
  11. Jquery手机发送短信之后,进入倒计时状态
  12. PHPUnit-附录 A. 断言 (assert)
  13. ECMAScript课程
  14. Head First Java.(第2版)
  15. 部署MySQL5.7时的权限问题
  16. javascript 模拟日历
  17. Python图形编程探索系列-08-再次认识标签
  18. 使用node和express+mongodb实现数据增删改功能
  19. False Ordering LightOJ - 1109(暴力。。唉,。又是一个水题。。)
  20. fn project Message Queues 配置

热门文章

  1. 【JavaScript】
  2. openSession和getCurrentSession的比较
  3. 简单约瑟夫环的循环单链表实现(C++)
  4. 【模拟赛】BYVoid魔兽世界模拟赛 解题报告
  5. 九度online judge 1543 二叉树
  6. springmvc框架原理分析
  7. Swift_UILabel
  8. 一键安装lnmp脚本
  9. 利用NSInvocation对方法进行抽象,实现对方法的加锁
  10. 2013ACM暑假集训总结-致将走上大三征途的我