1. ホーム
  2. java

[解決済み] C++のテンプレートに相当するJavaは何ですか?

2022-03-03 07:13:28

質問

C++のテンプレートに相当するJavaは何ですか?

Templateというインターフェイスがあることは知っています。それと関係があるのでしょうか?

どのように解決するのですか?

テンプレート C++にあるようなものは、Javaには存在しません。最も良い近似は ジェネリックス .

一つ大きな違いは、C++ではこれが合法であることです。

<typename T> T sum(T a, T b) { return a + b; } 

Javaには同等の構成はありません。せいぜい言えるのは

<T extends Something> T Sum(T a, T b) { return a.add(b); }

ここで Something というメソッドがあります。 add .

C++では、コンパイラは、コード内で使用されるテンプレートのすべてのインスタンスに対して、テンプレートのコンパイルされたバージョンを作成することになります。したがって、もし

int intResult = sum(5, 4);
double doubleResult = sum(5.0, 4.0);

とすると、C++ コンパイラは sum に対して int のバージョンと sum に対して double .

Javaでは 消去 . 何が起こるかというと、コンパイラが汎用型パラメータへの参照をすべて削除するのです。コンパイラは、異なる型パラメータで何度使用されても、コードのコンパイル済みバージョンは1つしか作成しません。

その他の違い