当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
关于Archiver类的equals方法
发布时间:2010/12/12 20:12:26 来源:城市学习网 编辑:ziteng
  Archiver
  这个类中出现两处错误。
  private String excute(StringBuffer expiression){
  if(expiression==null||expiression.equals("0")){
  return "0";
  }
  int indexF = expiression.lastIndexOf("(");
  if(indexF<0){
  return count(expiression.toString());
  }else{
  int indexA = expiression.indexOf(")", indexF);
  return excute(expiression.replace(indexF, indexA+1, count(expiression.substring(indexF+1, indexA))));
  }
  }
  equals比较的是两个同类型的对象
  虽然stringBuffer默认继承Object 的equals方法,但是expiression.equals("0")就算是expiression = new StringBuffer("0");比较的结果依旧是false
  所以应该是改为:
  private String excute(StringBuffer expiression){
  if(expiression==null||(expiression.toString()).equals("0")){
  return "0";
  }
  int indexF = expiression.lastIndexOf("(");
  if(indexF<0){
  return count(expiression.toString());
  }else{
  int indexA = expiression.indexOf(")", indexF);
  return excute(expiression.replace(indexF, indexA+1, count(expiression.substring(indexF+1, indexA))));
  }
  }
  这个类还有一处同样的错误
  他们的equals是myeclipse生成来的,这是造成这个问题的直接原因。
  ps:不过如果他们没有使用过hash类的集合类,这个equals的bug应该不会被用到。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved