Boolean.getBoolean() 与 Boolean.parseBoolean()

2023-02-13,,

1. 问题回顾

当在不了解 Boolean 中的 getBoolean() 方法与 parseBoolean() 方法的区别时,在使用过程中就会出现不明所以的bug。

比如如下使用情况:

    // isAdmin 代表是否是 admin 角色
String isAdmin = "true";
if (Boolean.getBoolean(isAdmin)) {
// 执行 admin 的一些操作
.......
}

这是我开发过程中排查bug的时候,遇到的一个问题,会出现 Boolean.getBoolean(isAdmin) 返回的是 false,导致执行逻辑一直进入不到 admin 的逻辑中。

2. 二者的具体实现

下面就分别讲解下二者的具体区分以及实现:

Boolean.parseBoolean(String s) : 根据传入的 s 的值,当 s 非null 且字符串的值为 "true" 时,该方法返回为 ture。这个方法的使用才是我们经常需要使用的方法--用于判断 字符串的值 "ture" 或 "false",并返回对应的 boolean 值。具体内部实现如下:

Boolean.getBoolean(String name) : 参数name为系统属性 property 的 key 值。该方法首先会通过 System.getProperty(name) 获取系统属性的值,再通过 parseBoolean 方法判断该属性的值是否为"true"或"false"。此方法的使用是根据传入的name判断系统中该name属性的属性值,而不是直接判断name的字符串值是"true"或"false"不了解的情况下慎用!!

3. 使用

对二者的选择:我们在开发场景中经常使用的是 Boolean.parseBoolean(),使用错误会造成很困惑的bug。

Boolean.getBoolean() 与 Boolean.parseBoolean()的相关教程结束。

《Boolean.getBoolean() 与 Boolean.parseBoolean().doc》

下载本文的Word格式文档,以方便收藏与打印。