我正在編寫一個程序來模擬人工神經網絡。我有以下的類和接口設置:無法將ArrayList <subtype>轉換爲ArrayList <type>
public interface Neuron
{
}
// Input neuron
public class INeuron implements Neuron
{
}
// Output and hidden neuron
public class ONeuron implements Neuron
{
}
public interface Layer
{
public ArrayList<Neuron> getNeurons();
}
// Input layer
public class ILayer implements Layer
{
ArrayList<INeuron> neurons = new ArrayList<INeuron>();
public ArrayList<Neuron> getNeurons()
{
return neurons;
}
// other stuff appropriate to the input layer
}
編譯器報告「無法從ArrayList中<INeuron>轉換爲ArrayList的<神經>。」
我試過切換東西。例如:ArrayList<Neuron> neurons = new ArrayList<INeuron>()
。但這似乎將同樣的錯誤轉移到了班級的不同部分。
我不明白爲什麼INeuron不能隱式投射到神經元,因爲INeuron是Neuron的一個亞型。
正確的解決方案將取決於您對返回列表的用途(只讀?修改?)。出於很好的理由,「通用」不是「通用」。 –
trutheality
2012-04-13 01:35:06