【发布时间】:2012-04-25 09:05:53
【问题描述】:
我正在编写一个程序来模拟人工神经网络。我设置了以下类和接口:
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
我试过换东西。例如:ArrayList<Neuron> neurons = new ArrayList<INeuron>()。但这似乎只是将相同的错误转移到班级的不同部分。
我不明白为什么不能将 INeuron 隐式转换为 Neuron,因为 INeuron 是 Neuron 的一个子类型。
【问题讨论】:
-
正确的解决方案将取决于您对该返回列表的预期用途(只是阅读?修改?)。
Generic<SubType>不是Generic<Type>有充分的理由。
标签: java arraylist type-conversion