public class IRock
{
public List<IMineral> getMinerals();
}
public class IMineral { ... }
public class SedimentaryMineral implements IMineral { ... }
public class SedimentaryRock implements IRock
{
private List<SedimentaryMineral> minerals;
@Override
public List<SedimentaryMineral> getMinerals()
{
return minerals;
}
}
獲得一個編譯器錯誤錯誤:的Java編譯泛型
Type mismatch: cannot convert from List<SedimentaryMineral> to List<IMineral>.
我明白,我不能轉換的IMPL回到它的API接口(因爲API只比 - 一個API)。但我很困惑,爲什麼我得到一個編譯器錯誤! Java不應該承認SedimentaryMineral
是IMineral
的impl並允許這個事實?!?
除了解釋爲什麼我得到這個編譯器錯誤,也許有人可能會指出爲什麼我的方法在這裏是「壞設計」,我應該怎麼做來糾正它。提前致謝!
這個問題的答案中有一個非常好的解釋:http://stackoverflow.com/questions/5082044/most-efficient-way-to-cast-listsubclass-to-listbaseclass – 2012-04-09 15:50:02