HashSet が次のプロジェクトのソリューションになるかどうかを確認しようとしているので、機能を確認するための非常に簡単なテストを行っています。私は単純なクラスを持っていますKlant
:
public class Klant {
private int klantNummer;
public Klant(int nummer) {
this.klantNummer = nummer;
}
public int getKlantNummer() {
return this.klantNummer;
}
}
構成を介したクラスは、HashSet
public class MySet<Klant> {
private Collection<Klant> mySet = null;
public MySet() {
mySet=new HashSet<Klant>();
}
public void add(Klant elem) {
mySet.add(elem);
}
public void toon() {
Iterator<Klant> i = mySet.iterator();
while(i.hasNext()) {
Klant k = i.next();
System.out.println(k.);
}
}
}
問題はメソッドtoon()
にあります。基本的には、Iterator に Klant オブジェクトが含まれるように指定していますが、<Klant>
ローカルオブジェクトでは
、オブジェクトはまだインスタンスであり、次のようにキャストしても、で 定義されたメソッドk
が提供されません。getKlantNummer()
Klant
k
Object
Object k = (Klant)i.next();
うまくいきません。ダウンキャスティングは危険ですが、私が覚えている限りでは禁止されていません。
何かアドバイス?