`
lantian_123
  • 浏览: 1370124 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对Boolean.getBoolean(String name)的己见

    博客分类:
  • Java
阅读更多

1、今天遇到这样一件事:想把String类型的true和false转换成boolean的原生类型,于是顺手的用Boolean.<alt+/>(快捷键),jdk提供了一个static 的 getBoolean(name)方法,调用之后并不是我预期的结果。最先值得怀疑的应该是自己代码有问题。细查后原来是被此方法名误解了。

 

2、这个方法名起的很邪恶。就是被他的字面意思给误解了。

 

3、仔细看了看文档

jdk 写道
Returns true if and only if the system property named by the argument exists and is equal to the string "true". (Beginning with version 1.0.2 of the JavaTM platform, the test of this string is case insensitive.) A system property is accessible through getProperty, a method defined by the System class.

 当且仅当系统属性的名字存在且他的值为“true”是才返回true,不知道大家在第一次有没有被误导的,我反正被他欺骗了。

 

4提供这样的一个方法究竟有什么用处了。我相信作者van Hoff最初的想法是很好的在没有这个方法之前,如果想获取系统属性的值转换成Boolean类型操作的话通常就是:

String value = System.getProperty(key);
boolean b = Boolean.valueOf(value);
//TODO

 而现在可以直接用getBoolean方法了,其实他也就是在这方法里封装了一下string——>boolean转换的步骤,请看源代码:

 public static boolean getBoolean(String name) {
        boolean result = false;
        try {
            result = toBoolean(System.getProperty(name));
        } catch (IllegalArgumentException e) {
        } catch (NullPointerException e) {
        }
        return result;
    }

 5、对此方法的一些见解:本应是作为System类中的一个方法,现在把他放在Boolean类中,试想如果是这样写:

System.getPropertyAsBoolean(name)

是不是见名知义了呢?

 

 

6、瞎想:作者van Hoff本是好意,没想到弄巧成拙,误导不少初次使用此方法的人,查看了下写System类和Boolean类的作者分别为:unascribed和van Hoff,他们正喝着咖啡,一边聊着天,一边写着代码,聊着聊着······(由大家补充吧),结果。。。

分享到:
评论

相关推荐

    几个有意思的java程序,考考你的java功底

    因此,当我们尝试调用`yesOrNo("true")`时,尽管参数为`"true"`,但`Boolean.getBoolean(s)`实际上是在查找名为`"true"`的系统属性,而不是直接评估字符串本身。由于没有名为`"true"`的系统属性,因此返回`false`。...

    java string类型转换boolean类型的方法

    在Java编程语言中,将`String`类型转换为`boolean`类型主要涉及到两个方法:`Boolean.getBoolean(String s)`和`Boolean.parseBoolean(String s)`。这两个方法各有不同的使用场景和行为。 首先,`Boolean.getBoolean...

    Test_sget_boolean.rar_sget-boolean

    `Test_sget_boolean.rar`是一个压缩包,包含了对`sget-boolean`进行测试的源代码文件`Test_sget_boolean.c`。下面我们将深入探讨这个测试用例以及可能涉及的相关知识点。 1. **单元测试框架**:`DxTestCase`可能是...

    java jdbc帮助类 v1.0 自带连接池

    java jdbc帮助类 v1.0 自带连接池 boolean delete(java.lang.String sql) 删除单条记录的方法,适用于... boolean update(java.lang.String sql, java.lang.String poolName) 更新一条记录,适用与简单的update语句

    jdbc 帮助类 java 自带连接池 v1.01

    void setPoolName(java.lang.String poolName) boolean update(java.lang.String sql, java.util.Map&lt;java.lang.Integer,java.lang.Object&gt; elements) 根据输入的参数执行更新操作 boolean update(java....

    生成系统日志

    at attGateWay.AttOp.exeQuery(String fromStrIn, String whereStrIn, Int32 SearchType, Boolean IsGetCount, String strRelation, Boolean IsCache, String gh, Int32& ResultCount) 请问此问题如何解决?我在...

    2009年的JavaOne大会上,Joshua Bloch和Neal Gafter又为我们带来的7道谜题

    如果输入是"yes", "y"或"t",则将其转换为"true",然后使用`Boolean.getBoolean()`进行解析。在`main`方法中,调用`yesOrNo("true")`和`yesOrNo("Yes")`。根据`Boolean.getBoolean()`的文档,它会将非空且非"false...

    javaSE_tedu_day.zip

    3.check(String name,String pwd)boolean 4.updateInfo(String name,String email):void 5.updatePwd(String newPwd):void main方法: 1.注册 2.登录 0.退出登录 登陆成功之后,进入用户管理 1.修改个人...

    第三部分:学会在mimics中操作Boolean.avi

    Mimics Medical 20.0学习视频教程

    ConnPerRoute.rar_The Class

    例如,测试可能包括检查`Boolean.parseBoolean(String str)`是否能正确解析字符串到对应的布尔值,或者测试`Boolean.getBoolean(String name)`是否能从系统属性中获取预期的布尔值。 至于`ConnPerRoute.java`,这是...

    Boolean RT.zip

    BooleanRT, 实现2个物体间的布尔运算 The extension provides the following functions: 1- Real-time or per-click Boolean execution. 2- Material, UV and texture preservation. 3- Saving to prefab. 4- ...

    Java 中的 Boolean toString() 方法及其示例.docx

    在 Java 编程语言中,`Boolean.toString()` 方法是一个非常重要的功能,用于将布尔值转换成对应的字符串表示。`Boolean` 类是 `java.lang` 包中的一个类,它提供了许多与布尔值相关的操作,包括将 `boolean` 值转化...

    Chartlet.dll

    ID System.String ShowCopyright System.Boolean InflateWidth System.Int32 InflateHeight System.Int32 ShowErrorInfo System.Boolean Colorful System.Boolean AutoBarWidth System.Boolean Alpha3D System.Byte ...

    Json解析ParsreTools.zip

    object = jsonObject2.getBoolean(varName[i]); } else if (type.equals("class java.lang.String")) { object = jsonObject2.getString(varName[i]); } else if (type.contains("java.util.List...

    简介JavaScript中Boolean.toSource()方法的使用

    JavaScript中的`Boolean.toSource()`方法是一个较少使用的特性,它允许开发者获取一个布尔值对象的源代码表示形式。尽管这个方法在某些情况下可能有用,但值得注意的是,它在Internet Explorer浏览器中是不支持的,...

    bool-exercises-41:Boolean.careers 类 41 的练习源代码

    "Boolean.careers"类41的练习可能涉及编写一个程序,其中的类`Boolean.careers`用于表示与职业相关的布尔逻辑。这个练习可能是为了帮助学习者更好地理解如何在实际场景中应用布尔类型和逻辑运算符。 在编程中,布尔...

    java内核分析.pdf

    - `Boolean.getBoolean(String name)`: 根据属性值转化为布尔值。 - `Integer.getInteger(String name)`: 获取属性值对应的整数,若无则返回`null`。 - `Integer.getInteger(String name, Integer def)`: 获取属性值...

    Class.forName

    此外,`Class.forName()`方法还有其他重载形式,如`forName(String className, boolean initialize, ClassLoader loader)`,它允许你控制是否初始化类以及使用哪个类加载器进行加载。 总的来说,`Class.forName()`...

    SharedPreferences工具类(2种)

    boolean value = SharedPreferencesUtil.getInstance(context).getBoolean("key", false); ``` ### 两种方法对比 - **静态内部类**:优点是避免了内存泄漏,因为静态内部类只会持有外部类的引用,而不会持有...

Global site tag (gtag.js) - Google Analytics