インターフェイスで動作するクラスがいくつかあります。
インターフェースは次のとおりです。
public interface Orderable
{
int getOrder()
void setOrder()
}
ワーカークラスは次のとおりです。
public class Worker
{
private List<Orderable> workingList;
public void setList(List<Orderable> value) {this.workingList=value;}
public void changePlaces(Orderable o1,Orderable o2)
{
// implementation that make o1.order=o2.order and vice versa
}
}
インターフェイスを実装するオブジェクトは次のとおりです。
public class Cat implements Orderable
{
private int order;
public int getOrder()
{
return this.order;
}
public void setOrder(int value)
{
this.order=value;
}
public Cat(String name,int order)
{
this.name=name;
this.order=order;
}
}
主な手順では、猫のリストを作成します。リストが変更されたとき、およびこのリストを使用してコントロール モデルが作成されたときに、動的にコントロールを更新するために、グレーズド リストを使用します。
目標は、このリストをワーカー オブジェクトに転送することです。そのため、メイン プロシージャのリストに新しい猫を追加できます。ワーカーは、リスト プロパティを再度設定しなくても、そのことを認識できます (リストは、メイン プロシージャとワーカー)。しかし、私がそれを呼び出すworker.setList(cats)
と、Orderable を期待しているが、Cat を取得していることについてアラートが表示されます... しかし、Cat は Orderable を実装しています。これを解決するにはどうすればよいですか?
メインコードは次のとおりです。
void main()
{
EventList<Cat> cats=new BasicEventList<Cat>();
for (int i=0;i<10;i++)
{
Cat cat=new Cat("Maroo"+i,i);
cats.add(cat);
}
Worker worker=new Worker();
worker.setList(cats); // wrong!
// and other very useful code
}