public enum Test {
VALUE, NAME;
}
を持って、私は私が列挙にその背中を変換することができますどのように
byte[] array = Test.VALUE.toString().getBytes(Charsets.UTF_8)
バイト配列に変換?
Test.valueOf(array.toString())
は機能しません。
public enum Test {
VALUE, NAME;
}
を持って、私は私が列挙にその背中を変換することができますどのように
byte[] array = Test.VALUE.toString().getBytes(Charsets.UTF_8)
バイト配列に変換?
Test.valueOf(array.toString())
は機能しません。
最初にコンストラクタを使用して配列を適切なString
に変換する必要があります。 array.toString()
はあなたの考えをしておらず、ちょっとばかげているだけです。
byte[] array = Test.VALUE.toString().getBytes(Charsets.UTF_8);
String valueString = new String(array, Charsets.UTF_8);
Test value = Test.valueOf(valueString);
array.toString
が機能しなかった理由はtoString
戻る配列の説明ではなく、文字列がUTF-8エンコーディングを持つ配列内のバイトを用いて構築することです。 toString
は、[[email protected]
のようなものを返すだけで、人間にはほとんど何も意味しません。
バイト配列を文字列に変換するには、文字列のコンストラクタ(バイト配列をとるもの)とCharset
を使用します。ここでは全体のコードは次のとおりです。
// converting to byte array
Test t = Test.VALUE;
byte[] bytes = t.toString().getBytes(StandardCharsets.UTF_8);
// converting back to Test
String str = new String(bytes, StandardCharsets.UTF_8);
Test newT = Test.valueOf(str);
あなたは論理的に考えてみれば、toString
はおそらくあなたが期待する何を与えることはできません。これは、バイト配列を文字列に変換するために、エンコーディングを指定する必要があるためです。 toString
を呼び出すと、明らかにCharset
オブジェクトが渡されなかったので、どのような文字セットが必要なのかをコンピュータがどのように知っているのでしょうか?
このコードの実行例を次に示します。https://repl.it/Hosb/0 –