我很早就过了SJCP,可是在实际项目中居然还是犯下了一个让我羞愧难当的错误,而且这些错误还产生了致使的影响,真是杯具啊!大家给我扔块西瓜皮吧,我得凉快下~~~
错误1:长整数赋值问题
系统有一个功能要产生邀请码,客户通过邀请码进行注册,但是邀请码要有过期时间,希望60天后过期,过期时间采用毫秒数:
long EXPIRED_DATE = 60 * 24 * 60 * 60 * 1000;
可是,测试人员告诉我,邀请码10天不到就过期了,我看了代码,百思不解,最后跟踪了代码,才发现
引用
60 * 24 * 60 * 60 * 1000
并不会自动转化为long,则是一个int,10天的毫秒数就超过了int的最大值,因此10天不到就过期了!
这儿犯下的错误是对整数字面值赋值时,默认为int型这个基础Java知识的忽视造成的.如果要让字面数字当成long,则必须在字面数字后显示加
L标识,即:
long EXPIRED_DATE = 60 * 24 * 60 * 60 * 1000L;
错误2:数值越界的问题
我写的一个模块允许开发者注册插件,为了控制插件执行的先后顺序,因此我写了一个Orderable接口,插件实现该接口以决定执行的先后顺序(orderNo越小越先执行):
public interface Orderable {
/**
* 排序号,越小越在前面
*/
int getOrdreNo();
}
然后我写了一个Comparator,以便可以通过java.util.Collections的
引用
sort(List<T> list,Comparator<? super T> c)
对插件List进行排序。我的Comparator是这样写的:
public class OrderableComparator implements Comparator {
private static OrderableComparator intance = new OrderableComparator();
private OrderableComparator() {
}
public int compare(Object obj1, Object obj2) {
int order1 = Integer.MAX_VALUE;
int order2 = Integer.MAX_VALUE;
if (obj1 instanceof Orderable) {
order1 = ((Orderable) obj1).getOrdreNo();
}
if (obj2 instanceof Orderable) {
order2 = ((Orderable) obj2).getOrdreNo();
}
return order1 - order2;//① 大家注意这儿是出鬼的地方!!!
}
public static OrderableComparator getIntance() {
return intance;
}
}
但是一个开发者咆哮地告诉我,它的插件的getOrderNo()已经设置为Integer.MIN_VALUE,但是却在最后一位执行!!!
跟踪了代码,才发现
是数值越界的忽视造成了低级错误,下面具体分析一下,如Plugin1的getOrdreNo()为Integer.MIN_VALUE,而Plugin2的getOrdreNo()为1,可是大家想想下面的计算值是多少呢?
引用
Integer.MIN_VALUE - 1
是
2147483647!!
找到问题后改起来是不费工夫的:
public int compare(Object obj1, Object obj2) {
int order1 = Integer.MAX_VALUE;
int order2 = Integer.MAX_VALUE;
if (obj1 instanceof Orderable) {
order1 = ((Orderable) obj1).getOrdreNo();
}
if (obj2 instanceof Orderable) {
order2 = ((Orderable) obj2).getOrdreNo();
}
if(order1 > order2){
return 1;
}else if(order1 < order2){
return -1;
}else{
return 0;
}
}
唉,这两个CASE居然是最近几天连接发生了,真是百年成之不足,一旦败之有余啊。看来要恶补一下Java基础并时刻牢记啊!!
分享到:
相关推荐
羞愧难当.doc
初中语文文摘社会在一首诗面前羞愧难当
我甚至在新浪前端面试的时候胡说一通,现在想来真是羞愧难当! 没有深入了解就信口开河实在难堪大任。 最后被拒也是理所当然。 误区纠正 首先纠正误区,Angular并不是周期性触发藏检查。 只有当UI事件,ajax请求或者...
羞愧
羞愧的近义词.doc
羞愧的近义词精选.doc
小学语文近义词羞愧的近义词解释
现在想想实在是羞愧难当,当时不早些把这个代码传上来。 当然当时是因为为了快速达成目的,非常流氓的decompile了一下,直截了当,自觉羞愧难当,所以也是一直没放出来。。 此次也算了却一事啦。。。。。。 ##原型 ...
令我羞愧的一件事作文.doc
羞愧的近义词和反义词是什么及造句参考.doc
1面对夜莺感到羞愧——学习ppt课件
考试故事:我写了篇令自己羞愧万分的高考作文.doc
13-17岁中学生内疚、羞愧、尴尬情绪理解能力,韩玺英,廖凤林,以138名13-17岁中学生为被试,使用回忆他人情绪线索、情绪体验、情绪规则理解任务及情绪原因理解任务,测验并探讨了被试对内疚、羞�
(季版)二年级语文上册 第10课 面对夜莺感到羞愧学案(无答案)西师大版 学案.doc
小学教案
小学教案
小学教案
小学教案
小学教案