アカウント名:
パスワード:
これってC++で言うところのTemplateと同じものと考えてOK? それとも違う?
違います。 C++のテンプレートってのは「型紙」で、パラメータを与えることでコンパイル時にコードを展開(インスタンス化)する。別の型をパラメータに与えて使う場合はその型用のコードがインスタンス化される。基本的には文字列操作(マクロ展開)のようなイメージ。 Javaのgeneric typeは、パラメータ型ごとにインスタンス化されるわけではない。生成されるコードは1つだけ。 生成されるバイトコードで実行時に型チェックをするコードが含められたりするわけではないの
つまり、コンパイラが吐き出す内部コードの違いだけで、使い方としては同じ、 と考えてオーケー?
まず、C++の素朴な意味でのtemplateの必要性というのは、たとえばStackという何かをFIFO的に 格納するクラスを定義したいときに、int型のためのIntStack、Stringク ラスのためのStringStack、MyClassのためのMyClassStackとか別個にたくさん 書きたくない、ってことです。こりゃ馬鹿みたいな話です。格納する要素の型だけが違うだけで操作はほとんど一緒なのに。 このようなあつかう型の違いをパラメータとして切り出せるようにしたのがt
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
generic type (スコア:0)
これってC++で言うところのTemplateと同じものと考えてOK?
それとも違う?教えて、エライ人。
Re:generic type (スコア:1, 参考になる)
違います。
C++のテンプレートってのは「型紙」で、パラメータを与えることでコンパイル時にコードを展開(インスタンス化)する。別の型をパラメータに与えて使う場合はその型用のコードがインスタンス化される。基本的には文字列操作(マクロ展開)のようなイメージ。
Javaのgeneric typeは、パラメータ型ごとにインスタンス化されるわけではない。生成されるコードは1つだけ。 生成されるバイトコードで実行時に型チェックをするコードが含められたりするわけではないの
Re:generic type (スコア:0)
と考えてオーケー?
templateじゃなくてgeneric typeを使った際の利点はなんでしょうか?
#スマン、オイラバカなんで。もう少しわかりやすく説明して頂けると・・・。
Re:generic type (スコア:3, 参考になる)
まず、C++の素朴な意味でのtemplateの必要性というのは、たとえばStackという何かをFIFO的に 格納するクラスを定義したいときに、int型のためのIntStack、Stringク ラスのためのStringStack、MyClassのためのMyClassStackとか別個にたくさん 書きたくない、ってことです。こりゃ馬鹿みたいな話です。格納する要素の型だけが違うだけで操作はほとんど一緒なのに。
このようなあつかう型の違いをパラメータとして切り出せるようにしたのがt
Re:generic type (スコア:0)