jigletで使用可能なStringBufferクラスは、一般的なStringBufferクラスとはちょっと違います。
公式サイト(jiglet.jp)によると、以下のメソッドが非対応となっています。
length()
setLength(int len)
reverse()
setCharAt(int index, char ch)
はたして、本当にこれだけなのでしょうか。
ちょっと検証してみたいと思います。
CLDCにおけるStringBufferクラスには、以下のコンストラクタが存在します。
StringBuffer()ひとつづつ検証してみます。
StringBuffer(int length)
StringBuffer(String str)
何の問題もありませんでした。標準のキャパシティを持つ、空のStringBufferが作成されます。
何の問題もありませんでした。指定された大きさのキャパシティを持つ、空のStringBufferが作成されます。
何の問題もありませんでした。指定された文字列を内部にもち、ある程度の余裕をもったStringBufferが作成されます。
メソッドはあまりに数が多いため、対応、非対応、使用不能を一覧にするだけにとどめておきます。
非対応とは、コンパイルは通るものの実機では動作不能と言われるもののことです。
対応 |
append(boolean b) append(char c) append(char[] str) append(char[] str, int offset, int len) append(int i) append(long l) append(String str) capacity() charAt(int index) delete(int start, int end) deleteCharAt(int index) ensureCapacity(int minimumCapacity) getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) insert(int offset, char c) insert(int offset, char[] str) insert(int offset, int i) insert(int offset, long l) insert(int offset, String str) toString() |
非対応 |
append(Object obj) * insert(int offset, boolean b) * insert(int offset, Object obj) * length() reverse() setCharAt(int index, char ch) setLength(int newLength) |
さて、この中で、ドキュメントとの相違があるのは以下のメソッドです。
メソッド | 使用不能の記載 | コンパイルエラー | 実機動作不可の警告 |
append(Object obj) | − | − | ○ |
insert(int offset, boolean b) | − | − | ○ |
insert(int offset, Object obj) | − | − | ○ |
このうち、 Object 絡みのものふたつに関しては、そもそもJigletにおいて生成できるObjectはごくわずかだ、ということで、まだ理解できます。
とすると、解せないのが insert(int offset, boolean b) となります。
どうしてjigletのStringBufferではbooleanだけをinsertできないのか。謎は深まるばかりです。
――まあ、単純にチェックルーチンに入れわすれただけなのかもしれませんが。
非常に簡単な方法で回避できるので、問題はないといえばないのかもしれません。
- sb.insert(offset, true);かなり邪道なうえ、実行速度も犠牲にはなってしまうんですけどね。
+ sb.insert(offset, "" + true);
jigletのStringクラスで使用可能と確認できたメソッドは以下の通りです。
StringBuffer()
StringBuffer(int length)
StringBuffer(String str)
append(boolean b)
append(char c)
append(char[] str)
append(char[] str, int offset, int len)
append(int i)
append(long l)
append(String str)
capacity()
charAt(int index)
delete(int start, int end)
deleteCharAt(int index)
ensureCapacity(int minimumCapacity)
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
insert(int offset, char c)
insert(int offset, char[] str)
insert(int offset, int i)
insert(int offset, long l)
insert(int offset, String str)
toString()