私はBlackBerry用に開発していますが、このばかげた問題で立ち往生しています。
文字列値「1」と「0」をそれぞれtrueとfalseに変換する必要があります。それにもかかわらず、BlackberryJDKはJava 1.3に基づいているため、Boolean.parseBoolean、Boolean.valueOf、またはBoolean.getValueを使用できません。
明らかに、私は次のようなことができます:
if (str.equals("1")) return true;
else if (str.equals("0")) return false;
しかし、これは非常に見苦しく、これらの文字列値は後で「true」と「false」に変更される可能性があります。それで、これらのタイプ間で変換する別の方法はありますか(String-> boolean、Java 1.3)?
[〜#〜] updated [〜#〜]:この質問のすべての回答は非常に役に立ちましたが、1つをマークする必要があったため、Ishtarの回答を選択しました。
それでも、私の修正は複数の回答の組み合わせでした。
public static boolean stringToBool(String s) {
if (s.equals("1"))
return true;
if (s.equals("0"))
return false;
throw new IllegalArgumentException(s+" is not a bool. Only 1 and 0 are.");
}
後で「true/false」に変更しても、誤って注文することはありません 28,000トンの石炭 。間違ったパラメータで呼び出すと、推測してfalseを返す代わりに、例外がスローされます。私の考えでは "pancake"
はfalse
ではありません。
Boolean.valueOf(String s)
がない場合...ええ、それだけです。次のような独自の静的メソッドを定義します。
public static boolean booleanFromString(String s)
{
return s.equals("1");
}
これにより、「後でtrueまたはfalseに変更される可能性がある」という問題が解決されます。これは、メソッドで追加/変更でき、コード内で他に何も変更する必要がないためです。
JavaのBoolean
オブジェクト(私が正しく覚えている場合)には、すでに2つの定数があります。
Boolean.TRUE
_Boolean.FALSE
_Boolean.booleanValue()
を使用して、対応するboolean
値を返すことができます。
独自のvalueOf(String s)
メソッドを作成して、次のようにboolean
および/またはBoolean
を返すことができます。
_public static boolean toBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
public static Boolean valueOf(String s) {
return (toBoolean(s)? Boolean.TRUE : Boolean.FALSE);
}
_
null文字と空白文字を確認する必要があります。それらを削除し、値を確認してください。
return (str!=null && str.trim().equals("1"));
これらの文字列値は後で「true」と「false」に変更される可能性があります
パラメータをハードコーディングしないでください。
したがって、このように独自のメソッドを定義します。
public static final String TRUE = "true"; //"1"
public static boolean strToBool(String s) {
// don't hard code your parameter.
return str.equalsIgnoreCase(TRUE);
}
public static boolean stringToBool(String s) {
s = s.toLowerCase();
Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));
if (trueSet.contains(s))
return true;
if (falseSet.contains(s))
return false;
throw new IllegalArgumentException(s + " is not a boolean.");
}
強化 Ishfar 答え。