人工ニューラル ネットワークをシミュレートするプログラムを作成しています。次のクラスとインターフェースをセットアップしました。
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 にキャストできない理由がわかりません。