私は、次の抽象クラスを持っている:サブクラスをスーパークラスJavaに適用することはできません。
public class AudioObject extends MyObject<PlayNowDescriptionItem> {
@Override
protected MyObject generate(PlayNowDescriptionItem item) {
//do something
}
}
PlayNowDescriptionItemがDescriptionItemを拡張して、次のサブクラスを持って
public abstract class MyObject<T extends DescriptionItem> {
protected abstract MyObject generate(T item);
}
。私はまた、オブジェクトを生成するためのファクトリクラスを持っています。
public class ObjectFactory {
public MyObject generateCastObject(DescriptionItem item) {
if (item instanceof PlayNowDescriptionItem) {
return new AudioObject(context).generate(item);
}
私はPlayNowDescriptionItemがDescriptionItemの子であるので、これは正常に動作だろうと思ったが、私は次の行にエラーが発生します。
return new AudioObject(context).generate(item);
AudioObjectのPlayNowDecriptionItemは、DescriptionItemに適用できません。
誰でも私がここで間違っているのを見ることはできますか?
'.generate((PlayNowDescriptionItem)item);'を明示的にキャストする必要があります。 –
なぜ答えは受け入れられなくなったのですか? –