以此为例(摘自Java正则表达式检查程序不起作用):
while(!checker) {
matcher = pattern.matcher(number);
if(matcher.find())
checker = true;
else
year++;
}
Run Code Online (Sandbox Code Playgroud)
如果.equals(false)用来检查价值是否重要Boolean checker?
我知道有这是颇为相似.但是,显然这个问题涉及原始boolean而不是对象包装器Boolean; 因此,.equals()不适用.
还应该Boolean以不同的方式处理boolean?
ygl*_*odt 53
试试这个:
if (Boolean.TRUE.equals(yourValue)) { ... }
Run Code Online (Sandbox Code Playgroud)
作为额外的好处,这是无效的.
ast*_*eri 18
从您的评论中,您似乎正在寻找使用Boolean包装类的"最佳实践" .但实际上没有任何最佳实践,因为开始使用这个类是个坏主意.使用对象包装器的唯一原因是在绝对必须的情况下(例如使用泛型时,即存储boolean在HashMap<String, Boolean>等等中).使用对象包装器没有上升空间和许多缺点,最值得注意的是它打开了你NullPointerException.
如果'!'有关系吗?是否使用.equals()代替布尔值?
这两种技术都容易受到a的影响NullPointerException,所以在这方面并不重要.在第一种情况下,Boolean将被拆箱到其相应的boolean值,并作为正常的比较.在第二个场景中,您正在调用Boolean类中的方法,如下所示:
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,结果都是一样的.
是否使用.equals(false)来检查布尔检查器的值是否重要?
按上述,不.
次要问题:布尔值应该与布尔值不同吗?
如果您绝对必须使用该Boolean课程,请null在执行任何比较之前检查.例如,
Map<String, Boolean> map = new HashMap<String, Boolean>();
//...stuff to populate the Map
Boolean value = map.get("someKey");
if(value != null && value) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
这将起作用,因为Java 短路条件评估.您也可以使用三元运算符.
boolean easyToUseValue = value != null ? value : false;
Run Code Online (Sandbox Code Playgroud)
但严重的是......只要使用原始类型,除非你被迫不这样做.