我找不到Boolean
類中的任何方法來將布爾值序列化爲「1」和「0」而不是「true」和「假」。Serialize布爾值爲「1」和「0」而不是「true」和「false」
是否有任何本機功能來做到這一點?如果不是,最好的方法是什麼(最優化的方式)?
更新:我的意思是從Boolean
中產生String
。
我找不到Boolean
類中的任何方法來將布爾值序列化爲「1」和「0」而不是「true」和「假」。Serialize布爾值爲「1」和「0」而不是「true」和「false」
是否有任何本機功能來做到這一點?如果不是,最好的方法是什麼(最優化的方式)?
更新:我的意思是從Boolean
中產生String
。
如果你在談論生產從給定Boolean
一個String
,則沒有,沒有產生「0」或「1」沒有內置的方法,但是你可以很容易地把它寫:
public static String toNumeralString(final Boolean input) {
if (input == null) {
return "null";
} else {
return input.booleanValue() ? "1" : "0";
}
}
根據您的使用情況,如果input
爲空,讓它拋出NullPointerException
可能更合適。如果您遇到這種情況,那麼您可以將方法僅限於第二行return
。
看起來你錯過了你的方法中的數據類型 – 2011-06-14 08:17:39
@ Eng.Fouad:的確,我確實感謝你的提醒。現在修復。 – 2011-06-14 08:18:11
我不確定,但只是扔掉它。你可以使用你自己的裝飾類。
什麼?笏? INI? Wataguan? – 2011-06-14 08:25:47
裝飾設計模式可讓您以不同的方式自定義您的輸出。你可以將'boolean'裝飾成'0'和'1'值。 – 2011-06-14 08:41:55
您是否看到OP要求提供「最優化」解決方案?你認爲裝飾者有資格嗎? – 2011-06-14 09:26:20
您可以使用CompareTo:
public static Integer booleanToInteger(Boolean bool)
{
if(bool == null) return null;
else return bool.compareTo(Boolean.FALSE);
}
我不會鼓勵這一點,因爲它很模糊而且不明顯。並且*如果*你這樣做,我會使用'Boolean.FALSE'作爲參數,以便跳過自動裝箱。 – 2011-06-14 08:43:04
@Joachim Sauer:謝謝,我解決了。 – 2011-06-14 08:46:23
...而且模糊/混淆代碼不太可能被JIT編譯器優化。 – 2011-06-14 09:28:17
如果你想序列化到一個字符,你可以做
public static char toChar(final Boolean b) {
return b == null ? '?' : b ? '1' : '0';
}
使用節儉API:
TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
String json = serializer.toString(object);
將布爾0或1而不是真/假。
你是認真的嗎?安裝一個完整的庫,在工廠中使用2個對象,所有隻是將一個字符串轉換爲布爾值... – 2014-06-20 08:10:15
什麼方法*序列化*布爾'爲「真」和「假」?或者你只是在談論從'Boolean'生成'String'? – 2011-06-14 08:12:33
你爲什麼想這樣做? – 2011-06-14 08:12:53
讓'b'成爲一個布爾值:'int i = b? 1:0;'。 – Kevin 2011-06-14 08:13:00