我有2個抽象類:Screen
和World
。兩者都執行IState
。 所以我想使用具體類的泛型類型來繞過類的投射。泛型類混淆
public abstract class World<S extends Screen> implements IState{/*body*/}
public abstract class Screen<W extends World> implements IState{/*body*/}
public final class SomeWorld extends World<SomeScreen> {}
public final class SomeScreen extends Screen<SomeWorld> {}
有沒有錯誤,但在第二個抽象類的警告告訴我,我錯過了一般的論點。所以我暫時保留警告
public abstract class World<S extends Screen<?>> implements IState{/*body*/}
public abstract class Screen<W extends World<?>> implements IState{/*body*/}
我是否以正確的方式使用泛型或任何更好的解決方案?
編輯:假設在SomeWorld類中有沒有在抽象的世界方法中聲明的doSomething()方法。我怎麼能在一些屏幕實例中調用world.doSomething()而不投射: ((SomeWorld)世界).doSomething()
似乎你不需要在這裏通用,你究竟是什麼意思*「所以我想使用具體類的泛型類型,以繞過類的鑄造。」* –
你確定你想在你的班級的循環設計? – MKorsch
不能說你是否正確使用泛型,沒有更多關於你想要實現的細節。請詳細說明,特別是「屏幕」和「世界」之間的關係(爲什麼你需要每種類型都依賴於其他類型)。 –