[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re:ラッパークラスの配列からプリミティブの配列へのコピー




In article <19990106122901.AAA770@xxxxxxxxxx>
ENDO Yasuyuki wrote:
>>これってC++のTemplateを使いたい典型的なパターンですよね.
>
>そうですね。今まで Java に「パラメタライズドクラス」みたいなものが
>必要だと思ったことは無かったのですが、今回はやってみてよくわかりました。
>せめてプリミティブ配列に、"要素数確定後に要素数を動的に変更できる仕組み" が
>あれば...なんて思いました。
>または、プリミティブを格納できる Collection クラスがほしい。
>
(snip)
>># こうしちゃうとやっぱり動的にしか型チェックできないのは辛い.
>
>instanceof かな... これを予約語に入れたというのは深い考えがあったのではと
>感じています。
動的/静的チェックはコンパイル時のチェックか実行時のチェックかという
意味なので、instanceofやClass#isInstance()は動的な型チェックしか出来
ませんね.
結局、リフレクションを使った時点で、コンパイル時に検出できるべき型不
適合エラーが実行時にしか検出できなくなるのが問題で、Javaで継承関係に
ない複数の型を扱うメソッドはあんなふうにしか書けないんですね.
# でもパラメタライズドクラスが言語でサポートされることはないでしょう
# ね.(使用頻度と理解の容易さからは)
# 拡張のプリプロセッサなどでは出来るんですよね(未確認).

>># それ以前に遅くて使えない可能性もありますが.
>
>私の作品も、要素数分のループが回るのでなんだかなあ って感じです。
今のところループを使わないでコピーする方法は思い浮かばないので、その
点では変わらないと思います.
私の示したやつでは、それに加えて、Array.set<Type>()メソッドの性能と
Method#invoke()メソッドの性能が、to[i] = from[i].<type>Value();と書
くのと比べてどの程度遅いかという心配が有ります.

=====================================
Shin@イデア
=====================================