我正在编写一个程序来模拟人工神经网络。我设置了以下类和接口:
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<Neuron>”。
我试过换东西。例如:ArrayList<Neuron> neurons = new ArrayList<INeuron>()
。但这似乎只是将相同的错误转移到班级的不同部分。
我不明白为什么 INeuron 不能隐式转换为 Neuron,因为 INeuron 是 Neuron 的一个子类型。