相关疑难解决方法(0)

如何将对象列表转换为接口列表?

我有一些适用于接口的类:

这是界面:

public interface Orderable
{
    int getOrder()
    void setOrder()
}
Run Code Online (Sandbox Code Playgroud)

这是工人阶级:

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
   }
}
Run Code Online (Sandbox Code Playgroud)

这是一个实现接口的对象:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在主要程序中,我创建了一个猫列表.我使用glazed列表在列表更改时以及使用此列表创建控件模型时动态更新控件.

目标是将此列表传输到工作对象,因此我可以在主过程中向列表中添加一些新的cat,并且工作人员将在不再设置其list属性的情况下知道它(list是main proc中的相同对象工人).但是当我把worker.setList(cats)它叫做关于期待可订购的警报时,却得到一只猫......但是Cat实现了Orderable.我该如何解决这个问题? …

java casting interface glazedlists

37
推荐指数
3
解决办法
3万
查看次数

Java泛型 - 将子类型集合传递给需要基类型集合的方法

如何在Java中执行此操作 - 将子类型集合传递给需要基类型集合的方法?

以下示例给出:

The method foo(Map<String,List>) is not applicable for the arguments (Map<String,MyList>)
Run Code Online (Sandbox Code Playgroud)

我可以通过为类型化集合创建类层次结构来实现 - 但是否则可能呢?

public void testStackOverflow() {

    class MyList extends AbstractList {
        public Object get(int index) {
            return null;
        }
        public int size() {
            return 0;
        }           
    };

    Map <String, List>   baseColl = null;
    Map <String, MyList> subColl  = null;

    foo (subColl);              
}

private void foo (Map <String, List> in) {      
}
Run Code Online (Sandbox Code Playgroud)

编辑:从答案中得出结论,这需要"有界通配符",因此添加此文本以进行搜索

java generics

5
推荐指数
1
解决办法
3423
查看次数

标签 统计

java ×2

casting ×1

generics ×1

glazedlists ×1

interface ×1