final int j = 2;
...
}
因为,你知道的…你的用户们,他们就像如许
// This library sucks
@SuppressWarnings("all")
Object t = (Object) (List) Arrays.asList("abc");
bad(t);
// Watch out
信赖我,我看过的多了,还有如许的
所以说偏执是有好处的。
8. 老是在switch语句里加上default(好技巧文)
Switch…作为最滑稽的表达式之一,我不知道是该心存敬畏照样默默哭泣。不管如何,我们既然无法摆脱 switch ,在须要的时刻我们最好可以或许精确应用它,例如:
// Bad
switch (value) {
case 1: foo(); break;
case 2: bar(); break;
}
// Good
switch (value) {
case 1: foo(); break;
case 2: bar(); break;
default:
throw new ThreadDeath("That'll teach them");
}
是的,这是会产生的。你认为你写了一个超好的API,它真的是既酷炫又直不雅;接着就出现了一群用户,他们只是把一切类型生搬硬套进 Object 中 直到那该逝世的编译器停止工作,然后他们忽然链接到了缺点的办法,认为这一切都是你的错(工作老是如许)。
因为在当 value=http://news.51cto.com/art/201711/3 被惹人到软件中的时刻,default 就能发患咀用,使颇┞俘常运行!别和我提 enum 类型,因为这对 enums 也一样实用。
9. 用大年夜括号隔开 switch 的每一个 case 块(技巧文)
事实上,switch是最坑爹的语句,任何喝醉了或是赌输了的人都可以在某种说话中应用它。看看下面这个例子:
// Bad, doesn't compile
switch (value) {
case 2: int j = 2; break;
}
// Good
for (int i = 0; i < files.length; i++) {
break;
}
case 2: {
break;
}
// Remember:
default:
throw new ThreadDeath("That'll teach them");
}
在switch语句中,为所有的case都只定义了一个感化域。事实上,这些case不是真正意义上的语句,他们更像是标签,而switch就是指向这些标签的goto语句。事实上,你甚至可以把case语句和 惊人的FORTRAN77项声明 类比,对于FORTRAN,它的神秘已经超出了它的功能。
这意味着变量final int j 可以被任何case拜访,不论我们是否有break。看起来并不是很直不雅。我们可以经由过程添加简单的花括号为每一个case创建一个新的嵌套的感化域,当然不要忘了在每个 case 的语句块最后加 break。
【编辑推荐】
- 法度榜样员宣布:一张图读懂支撑阿里双十一1682亿的技巧架构体系
- 法度榜样员花2小时总结:20个异常有效的Java法度榜样片段
- 这种技巧可以或许替代 Android 原生开辟?
- 法度榜样员Java编程进阶的5个留意点,别编程两三年照样增删改查!
- Java EE成为以前,Eclipse为其“改名”望成为顶级开源项目!
// Bad
推荐阅读
Github一周热门项目总结:自然语言处理Python库spaCy最热!
【编辑推荐】 你想找的Python材料这里全都有!没有你找不到!史上最全材料合集 Python开辟中若何应用Hook技能 Python中的优化,大年夜神的法度榜样比我们写的快五倍,本来是如许做的! Python转JavaScri>>>详细阅读
地址:http://www.17bianji.com/lsqh/39068.html
1/2 1