私はインターフェースを持っていますHTTPSequence。また、抽象クラスAbstractHTTPFactoryがあり、抽象メソッドが。を返しArrayList<HTTPSequence>ます。から派生したクラスでは、AbstractHTTPFactoryこれらのメソッドをオーバーライドしてを返しArrayList<[Class implementing HTTPSequence]>ます。
出来ますか ?これで、コンパイラは、オーバーライドされたメソッドのシグネチャをに変更することを提案するエラーを出しますHTTPSequence。
// abstract class with abstract method returning ArrayList of objects implementing interface
abstract public class AbstractHTTPFactory {
abstract ArrayList<HTTPSequence> make();
}
// Specific class that returns ArrayList of objects of the class implementing HTTPSequence
public class RecipesHTTPFactory extends AbstractHTTPFactory{
public ArrayList<Recipe> make() {
}
}
// interface
public interface HTTPSequence {
}
// one of the classes implementing the above interface
public class Recipe implements HTTPSequence {
}
そして、Eclipseが私に与えるメッセージは次のとおりです。
この行の複数のマーカー-戻り値のタイプはAbstractHTTPFactory.make()と互換性がありません-....ider.AbstractHTTPFactory.makeを実装します