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()的更多相关文章

  1. Boolean.parseBoolean("true") 和 Boolean.getBoolean("true");的区别及用法

    正确用法:boolean repeatIndicator = Boolean.valueOf("true").booleanValue();或者也可以使用Boolean.parse ...

  2. Boolean.getBoolean用法

    相信很多人被Boolean.getBoolean(String name)欺骗过,想当然的认为它是将"true"或者"false"转换为Boolean类型的AP ...

  3. Boolean对象与Boolean原始值的区别

    我们先来看下面这道题: var x = new Boolean(false); if (x) {   alert('hi'); } var y = Boolean(0); if (y) {   ale ...

  4. 在项目中应该使用Boolean还是使用boolean?

    起因 在公司看代码时,看到了使用Boolean对象来完成业务逻辑判断的操作.和我的习惯不一致,于是引起了一些反思. boolean和Boolean的差别咱就不说了,我们仅探讨使用boolean与Boo ...

  5. Boolean类源码分析

    Boolean类里面的常量: Boolean.TRUE:这个是调用Boolean的构造函数,新建了一个Boolean对象,所以TRUE是Boolean类型的.用来避免每次都创建新的Boolean对象, ...

  6. C#调用Java代码

    c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...

  7. 1、关于Boolean(2015年05月30日)

    背景:刚在看Effective Java,看到一段关于Boolean提供一个返回实例的静态方法的例子,便去看了下Boolean的源码,发现有些内容是之前没注意到的,于是便有了下面这些. 1. Bool ...

  8. [九]基础数据类型之Boolean详解

      相对于其他的基础性 类型Boolean是很简单的 Boolean 基本数据类型boolean  的包装类 Boolean 类型的对象包含一个 boolean 类型的字段    属性简介 属性也比较 ...

  9. java.lang.Boolean 类源码解析

    Boolean源码比较简单. public final class Boolean implements java.io.Serializable, Comparable<Boolean> ...

  10. java封装数据类型——Boolean

    众所周知,java对常见的原始数据类型都提供了对应的封装类型,增加一些常用的特性(如 计算hash值.比较相等.类型转换等),以扩展他们对数据处理的能力,使得他们更好地适应面向对象编程的各种场景.今天 ...

随机推荐

  1. Kubernetes 中部署 MySQL 集群

    文章转载自:https://www.cnblogs.com/ludongguoa/p/15319861.html 一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板 ...

  2. acwing349 黑暗城堡 (最短路径生成树)

    求出最短树,用乘法原理统计答案就行了(模拟prim过程). 不知道说什么了,直接上代码: 1 #include<cstring> 2 #include<iostream> 3 ...

  3. MISC 网刃杯2022

    ​ MISC 玩坏的winxp 难度系数:4.0 题目描述:小敏的电脑Windows XP Professional不小心被玩坏了,里边有重要的东西,你能帮帮她吗? 利用whihex挂载 查看分区1 ...

  4. Day3 最短路 最小生成树 拓扑排序

    Day3 最短路 最小生成树 拓扑排序 (一)最短路 一.多源最短路 从任意点出发到任意点的最短路 1. Floyd \(O(n^3)\) for(int k=1;k<=n;k++) for(i ...

  5. JavaScript中的代码执行顺序

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head&g ...

  6. 7.pyagem-游戏背景

    背景交替滚动 游戏启动后,背景图像不断的向下移动 在视觉上产生角色不断向上移动的错觉 游戏背景不断变化,游戏主角的位置报错不变   实现方案 创建两张背景图 第一张完全和屏幕重合,第二章在屏幕的正上方 ...

  7. C# RulesEngine 规则引擎:从入门到看懵

    说明 RulesEngine 是 C# 写的一个规则引擎类库,读者可以从这些地方了解它: 仓库地址: https://github.com/microsoft/RulesEngine 使用方法: ht ...

  8. RegExp正则表达式的匹配

    JavaScript RegExp 对象 RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. 语法 var patt=n ...

  9. iphoneApp Fidder设置

    使用iphone 打开fidder 按照如上配置 安装完毕 然后访问计算机地址- 比如我的计算机ip地址是 192.168.2.10那么我需要在我的safari浏览器中输入192.168.2.10:8 ...

  10. 论文笔记 - Calibrate Before Use: Improving Few-Shot Performance of Language Models

    Motivation 无需参数更新的 In-Context Learning 允许使用者在无参数的更新的情况下完成新的下游任务,交互界面是纯粹的自然语言,无 NLP 技术基础的用户也可以创建 NLP ...