1. 概要

このチュートリアルでは、Javaのブールクラスを使用して文字列をブール値に変換するさまざまな方法を探ります。

2. Boolean.parseBoolean()

Boolean.parseBoolean()を使用すると、 String を渡して、プリミティブbooleanを受け取ることができます。

まず、 parseBoolean() Stringを値true:でどのように変換するかを確認するテストを作成しましょう。

assertThat(Boolean.parseBoolean("true")).isTrue();

もちろん、テストは合格です。

実際、 parseBoolean()のセマンティクスは非常に明確であるため、IntelliJ IDEAは、文字列リテラル“ true”を渡すことは冗長であると警告します。

つまり、このメソッドは、文字列をブール値に変換するのに最適です。

3. Boolean.valueOf()

Boolean.valueOf()でも String を渡すことができますが、このメソッドはプリミティブbooleanではなくBooleanクラスインスタンスを返します。 。

このメソッドもString:の変換に成功していることがわかります。

assertThat(Boolean.valueOf("true")).isTrue();

このメソッドは、実際には parseBoolean()を使用してバックグラウンドで String 変換を実行し、その結果を使用して静的に定義されたBooleanインスタンスを返します。

したがって、このメソッドは、返されたブールインスタンスが必要な場合にのみ使用する必要があります。プリミティブな結果のみが必要な場合は、 parseBoolean()を直接使用する方がパフォーマンスが高くなります。

4. Boolean.getBoolean()

Boolean.getBoolean()は、 String を受け入れ、booleanを返す3番目のメソッドです。

このメソッドのドキュメントや実装を見なくても、このメソッドは String引数をboolean:に変換するためのものであると合理的に推測できます。

assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!

このテストが失敗する理由は String引数は、ブールシステムプロパティの名前を表すことになっています。 

システムプロパティを定義することにより:

System.setProperty("CODING_IS_FUN", "true");
assertThat(Boolean.getBoolean("CODING_IS_FUN")).isTrue();

最後に、テストに合格します。 このメソッドの実装を調べると、このメソッドも parseBoolean()メソッドを使用してString変換を行っていることがわかります。

getBoolean()は文字通り parseBoolean(System.getProperty( “true”))のショートカットであり、は名前に惑わされないことを意味します。

したがって、 Boolean.getBoolean( “true”);true を返す唯一の方法は、“true”というシステムプロパティとその値が存在する場合です。 trueに解析されます。

4. 結論

この短いチュートリアルでは、 Boolean.parseBoolean() Boolean.valueOf()、および Boolean.getBoolean()の主な違いを確認しました。

parseBoolean() valueOf()はどちらもStringbooleanに変換しますが、Booleanであることを覚えておくことが重要です。 getBoolean()はしません。

このチュートリアルのすべての例を含むソースコードは、Githubにあります。