[解決済み] 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つしか作成しません。
その他の違い
- C++では型パラメーターのバウンディングができないが、Javaではできる
- C++では、型パラメータをプリミティブにすることができるが、Javaではできない
- C++ではテンプレートが使用可能 型パラメータにデフォルトを持たせる Javaではできないこと
- C++では テンプレート特化 一方、Javaはそうではありません。 そして、この時点で予想されるように、C++ スタイルの テンプレートメタプログラミング は、Javaのジェネリックスでは不可能です。
- を見るのは忘れてください。 不思議なことに繰り返されるテンプレートパターン Javaで
- ポリシーに基づいた設計 はJavaでは不可能
関連
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] IntegerからBigIntegerへの変換