C++ と Java は、パラメトリック ポリモーフィズムの処理方法に類似点があります。どちらも、型パラメーターを通常の関数またはメソッドに推論しますが、プログラマーはコンストラクターを呼び出すときに型パラメーターを明示的に指定する必要があります (ただし、これは Java 7 で変更されました)。
この動作の背後にある技術的な理由は何ですか?
編集:これはScalaにも当てはまると誤って考えました。Java の例を次に示します。
class Foo<T> {
Foo(T x) { }
}
<T> void foo(T x) { }
Foo<Integer> f = new Foo(3);
foo(3);
これらはどちらも有効ですが、最初のものは ではなく「生の型」を作成しFoo<Integer>
、未チェックの代入を実行します。