云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Java开发规范(公司规范)

Java开发规范(公司规范)

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 23:02:43

OverrideBothEqualsAndHashCode

? 规则级别:

Error High ? 违规示例代码:

//该AgcDataInfo没有override equals方法 public class AgcDataInfo {

Public AgcDataInfo(String planUnitNo) {

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

//机组名称

String planUnitNo=””; /**

* 生成hash值 */

public int hashCode() {

return this.getPlanUnitNo().hashCode(); }

/**自动生成get,set方法

public String getPlanUnitNo() {

return planUnitNo; }

public void setPlanUnitNo(String planUnitNo) {

if(planUnitNo!=null)

this.planUnitNo = planUnitNo; } }

public void main(String[] args) {

Collection v=new Vector(); Map map=new Hashtable();

AgcDataInfo t1=new AgcDataInfo(“test”); AgcDataInfo t2=new AgcDataInfo(“test”); v.add(t1);

map.put(t1,“test“); map.put(t2,“test“); //false而不是true

System.out.println(v.contains(t2));

//2而不是1

System.out.println(map.size()); }

? 合法代码示例:

public class AgcDataInfo

{

Public AgcDataInfo(String planUnitNo) {

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

//机组名称

String planUnitNo=””; /**

* 比较等式,比较值为下达时间,下达功率,机组名称 */

public boolean equals(Object o) {

if (o instanceof AgcDataInfo) {

AgcDataInfo data = (AgcDataInfo) o;

return his.getPlanUnitNo().equals(data.getPlanUnitNo());

}

return false; }

/**

* 生成hash值 */

public int hashCode() {

return this.getPlanUnitNo().hashCode(); }

/**自动生成get,set方法

public String getPlanUnitNo() {

return planUnitNo; }

public void setPlanUnitNo(String planUnitNo) {

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

} }

public void main(String[] args) {

Collection v=new Vector(); Map map=new Hashtable();

AgcDataInfo t1=new AgcDataInfo(“test”); AgcDataInfo t2=new AgcDataInfo(“test”); v.add(t1);

map.put(t1,“test“); map.put(t2,“test“); //true

System.out.println(v.contains(t2)); //1

System.out.println(map.size()); } 3.2.6

懒式方式创建对象:不能采用双检查惯用法

? 规范描述:

双检查一般用于c,c++懒式方式获得资源时惯用模式,但在java中该模式是不适用的,因为java创建对象时,先将对象创建后,直接将指针赋予给变量,然后才进行后续的初始化,在初始化这段空白期中,如果另外的线程获得该对象的引用,调用该对象,会产生一些不可预测的结果。 ? PMD规则名称:

DoubleCheckLock

? 规则级别:

Error High ? 违规示例代码 public class Foo { Object baz; Object bar() {

if(baz == null) { //baz may be non-null yet not fully created synchronized(this){ if(baz == null){

baz = new Object(); } } }

return baz; }

}

? 合法代码示例: public class Foo{ Object baz; Object bar() {

synchronized(this){ if(baz == null){

baz = new Object(); } }

return baz; } } 3.2.7

不能在finally中返回值。

? 规范描述:

finally中是必须执行的程序块,如果在里面返回,则表示该方法返回值只能为这个,其他地方返回值可能无效。 ? PMD规则名称:

ReturnFromFinallyBlock

? 规则级别:

Error High ? 违规示例代码:

public int foo(String value) { try {

return Integer.parseInt(value); } catch (Exception e) { return 0;; } finally {

return -1; // Very bad. } }

? 合法代码示例:

public int foo(String value) { int ret=0; try {

ret= Integer.parseInt(value); } catch (Exception e) { ret= 0;

} finally {

//处理其他事宜 ……

搜索更多关于: Java开发规范(公司规范) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

OverrideBothEqualsAndHashCode ? 规则级别: Error High ? 违规示例代码: //该AgcDataInfo没有override equals方法 public class AgcDataInfo { Public AgcDataInfo(String planUnitNo) { if(planUnitNo!=null) this.planUnitNo = planUnitNo; } //机组名称 String planUnitNo=””; /** * 生成hash值 */ public int hashCode() {

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com