Ich habe folgende abstrakte Klasse:Unterklasse kann nicht auf Super-Klasse Java angewendet werden.
public abstract class MyObject<T extends DescriptionItem> {
protected abstract MyObject generate(T item);
}
, die folgende Unterklasse hat:
public class AudioObject extends MyObject<PlayNowDescriptionItem> {
@Override
protected MyObject generate(PlayNowDescriptionItem item) {
//do something
}
}
PlayNowDescriptionItem erstreckt DescriptionItem. Ich habe auch eine Fabrikklasse zum Erzeugen von Objekten.
public class ObjectFactory {
public MyObject generateCastObject(DescriptionItem item) {
if (item instanceof PlayNowDescriptionItem) {
return new AudioObject(context).generate(item);
}
dachte ich, dass dies funktionieren würde, weil PlayNowDescriptionItem ein Kind DescriptionItem ist, aber ich erhalte eine Fehlermeldung in der folgenden Zeile.
return new AudioObject(context).generate(item);
PlayNowDecriptionItem in AudioObject kann nicht auf DescriptionItem angewendet werden.
Kann jemand sehen, was ich hier falsch mache?
Sie müssen explizit einwerfen: '.generate ((PlayNowDescriptionItem) item);'. –
Hei warum wird die Antwort nicht mehr als akzeptiert markiert? –