【发布时间】:2011-11-26 05:16:11
【问题描述】:
我有一些使用接口的类:
界面如下:
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;
}
}
在主程序中,我创建了一个猫列表。我使用glazed lists 在列表更改以及使用此列表创建控件模型时动态更新控件。
目标是将这个列表转移到一个worker对象,这样我就可以在主过程中添加一些新的猫到列表中,并且worker无需再次设置它的list属性就可以知道它(list是main中的同一个对象proc和工人)。但是当我打电话给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
}
【问题讨论】:
标签: java interface casting glazedlists