久々にはまったので記録。
プロパティファイルである機能のスイッチON/OFFを制御したくて
x_flg = true
を記載して、
boolean x_flg = Boolean.getBoolean(propMap.getProperty("x_flg", "true")); logger.info("x_flg="+x_flg);
の結果が"false"。
えー?
読み込んだファイル間違えた?変な文字コード入ってない?プロパティ名正しい?とチェックしたが異常が見当たらない。
boolean x_flg = Boolean.getBoolean(propMap.getProperty("x_flg", "true")); logger.info("x_flg="+x_flg);
ではなく、正しくは、
boolean x_flg = Boolean.parseBoolean(propMap.getProperty("x_flg", "true")); logger.info("x_flg="+x_flg);
だった。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Boolean.html#parseBoolean-java.lang.String-
そういえばIntegerもparseIntだったな。
では、getBooleanは何者なんだ?というと、
引数によって指定されたシステム・プロパティが存在し、それが文字列"true"に等しい場合にだけ、trueを返します。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Boolean.html#getBoolean-java.lang.String-
システムプロパティだったか。なんと紛らわしい名前のメソッド…。
つか10年近く前に同じ罠に嵌った人が。
d.hatena.ne.jp
JavaFX & Java8プログラミング―Javaによる新しいGUIプログラミング入門
posted with amazlet at 18.06.16
日向 俊二
カットシステム
売り上げランキング: 135,182
カットシステム
売り上げランキング: 135,182
コメント