【问题标题】:Inheritance and Generics Java problem Observer [duplicate]继承和泛型Java问题观察者[重复]
【发布时间】:2018-10-21 02:46:43
【问题描述】:

我遇到了一个问题,我不知道这个重载是否正确。 我在很多情况下都应用了这个,例如:

public class Subject<T>{
  private  long id;
    private T data;
   protected List<Observer<T>> observers;  <code>
//..
    public List<Observer<T>> getObservers() {
        return observers;
    }
//..
}

public class OrdersSubject  extends Subject<List<Order>>{

    String status;
    List<List<Order>> reentrantOrders;
    boolean islimit = false;
    Long limit = 0l;
    //..
    public  List<RobotObserver> getObservers(){
        return this.observers;
    }
   //..

}

我会得到正确的 getObservers() 吗? 感谢期待。

In fact this is the implementation of RobotObserver:

public class RobotObserver extends Observer<List<Order>> implements RobotCallback{

Map<Integer,String> sysstat = new HashMap<Integer,String>();
private Subject subject;
//eActLevel is a Map containing and ordered list of <emotion,transitions of emotion list>
private Map<String,List<Double>> eActLevel;
//..
public List<Order> update(List<Order> o) {
    // reentrant Orders
    reentrantO = processOrders(o);
    this.data = this.callback(reentrantO);
    return data;
}

}

import java.util.List;

     import com.res.emorobots.data.Order;

      interface RobotCallback extends Callback<List<Order>>{


       }

我得到一个编译错误。我来自 c++ 世界,实际上我会对通过 c++ deque 中调用的内容更改 List 并实现矢量接口感兴趣

其实我正在寻找这样的东西:

public class RobotObserver extends Observer<K<Order> implements List<Order>> implements Callback...

【问题讨论】:

标签: java generics inheritance


【解决方案1】:

OrdersSubject::getObservers() 没有正确覆盖Subject::getObservers()OrdersSubject 扩展了Subject&lt;List&lt;Order&gt;&gt;,因此它的getObservers() 方法应该返回List&lt;Observer&lt;List&lt;Order&gt;&gt;&gt;。但事实并非如此。而是返回List&lt;RobotObserver&gt;

List&lt;RobotObserver&gt; 不是List&lt;Observer&lt;List&lt;Order&gt;&gt;&gt; 的子类型,尽管RobotObserverObserver&lt;List&lt;Order&gt;&gt; 的子类型,就像List&lt;String&gt; 不是List&lt;Object&gt; 的子类型,尽管String 是子类型的Object。非通配符泛型类型参数必须完全匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多