2
在以下java代碼中,NetBeans使用或不使用@Override語句進行投訴。 如果覆蓋不存在,則會顯示返回類型Pair<Interval, Interval>
和Pair<ExtendedInterval, ExtendedInterval>
不兼容的錯誤。解釋者建議我添加@Override語句。但是,@Override語句發生同樣的錯誤。Java:在不同返回類型的派生類中重寫方法?
讓這個錯誤消失的最好方法是什麼?我希望調用者不必將返回的對象轉換爲正確的類。
public class Interval {
private Date left;
private Date right;
public Pair<Interval, Interval> split(Date dt){
...
return new Pair<Interval, Interval>(
new Interval(left, dt),
new Interval(dt, right));
}
}
public class ExtendedInterval extends Interval {
private Data localData;
@Override
public Pair<ExtendedInterval, ExtendedInterval> split(Date dt){
Pair<Interval, Interval> baseInterval = super.split(dt);
return new Pair<ExtendedInterval, ExtendedInterval>(
new ExtendedInterval(localData, baseInterval.first()),
new ExtendedInterval(localData, baseInterval.second()));
}
}
這是一個很好的解決方案。我看到的唯一不足就是將調用的結果收集到超級。 '對<?延伸Interval,?延伸Interval> baseInterval = super.split(dt);' – Colin 2011-05-29 16:35:45
@Colin:是的,這是一個公平點......我不確定是否有任何事情要做,不幸的是:( – 2011-05-29 17:11:26