jigletでのStringBufferクラス


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(int length)

何の問題もありませんでした。指定された大きさのキャパシティを持つ、空のStringBufferが作成されます。

StringBuffer(String str)

何の問題もありませんでした。指定された文字列を内部にもち、ある程度の余裕をもった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()

tipsへ戻る
トップへ

© 2008 jiglet.info
以上の内容は、jiglet.infoによる独自研究です。
このページの内容についてはjiglet.infoまでお願いします。決してjig.jp社へと問い合わせないよう願います。