Javaのgenricsに関して(おそらく単純な)質問があります。私は次のクラスを持っています:
public class ValueCollection<Y> implements Collection<Y>
{
private Set<Entry<?, Y>> entries;
public ValueCollection(Set<Entry<?, Y>> entries)
{
this.entries = entries;
}
...
}
このようにコンストラクターを呼び出すと、次のようになります。
return new ValueCollection<V>(entries);
次のコンパイラエラーが発生します。
The constructor ValueCollection<V>(Set<Map.Entry<K,V>>) is undefined
クラスをこれに変更した場合:
public class ValueCollection<X, Y> implements Collection<Y>
{
private Set<Entry<X, Y>> entries;
public ValueCollection(Set<Entry<X, Y>> entries)
{
this.entries = entries;
}
...
}
そして私のコンストラクターはこれを呼び出します:
return new ValueCollection<K, V>(this.entries());
コンパイルエラーはなくなります。なぜそうなのか疑問に思っています。助けてくれてありがとう!