6
次の汎用クラスを定義しましたが、クラスオブジェクトで使用するとコンパイルされません。 ダイヤモンドJava 7をコンパイルしていません
incompatible types: Pair<String,Integer> cannot be converted to Pair<Object,Object>
が、なぜ最初のものはコンパイルしていないと第二のコンパイル:コンストラクタは、他のオブジェクトに
class Pair<T,V> {
T one;
V two;
public Pair(T one, V two) {
this.one = one;
this.two = two;
}
}
public static void main(String[] args) {
String hamza = "Hamza";
Integer soufiane = 0;
Pair<Object,Object> pairOne = new Pair<>(hamza, soufiane);
Pair<Object,Object> pairTwo = new Pair<Object, Object>(soufiane, hamza);
}
エラーメッセージを受け入れないでしょうか?
EDIT:は、それは、Java 8
何かがコンパイルされず、コンパイラがコンパイルしないと言うことはありません。 – Tom
私はそこにエラーメッセージを含めました!それはダイヤモンド表記であり、少なくとも私の知る限りコンパイルする必要があります。なぜそれが私にテンプレートパラメータを含めることを余儀なくされたのか、私は理解できません。 –
一般的な型はポリモーフではないので、 'Pair'を 'Pair