java.io.DataOutputStream.writeUTF(String str)
メソッドには、UTF-8 でエンコードされた文字列のサイズを65535
バイトに制限する奇妙な制限があります。
if (utflen > 65535)
throw new UTFDataFormatException(
"encoded string too long: " + utflen + " bytes");
次の理由から、それは奇妙です。
- このメソッドの JavaDoc には、この制限に関する情報はありません
static int writeUTF(String str, DataOutput out)
この制限は、このクラスの内部メソッドをコピーして変更することで簡単に解決できます- 逆の方法ではそのような制限はありません
java.io.DataInputStream.readUTF()
。
上記によると、このwriteUTF
方法でそのような制限の目的を理解できません。私は何を見逃したり誤解したりしましたか?