是否有可能在 java 中做到這一點而沒有問題?我的 IDE 將我的代碼突出顯示為“原始使用引數化類‘Etat’”和“未經檢查的呼叫‘add(E)’作為原始型別‘java.util.ArrayList’的成員”我的代碼:
public abstract class Etat<T extends Transition> {}
public abstract class Transition<E extends Etat> {}
uj5u.com熱心網友回復:
您可能正在尋找:
class Etat<E extends Etat<E, T>, T extends Transition<E, T>> {}
class Transition<E extends Etat<E, T>, T extends Transition<E, T>> {}
然后,你可以這樣做:
class MonEtat extends Etat<MonEtat, MaTransition> {}
class MaTransition extends Transition<MonEtat, MaTransition> {}
允許這兩種型別通過它們的型別引數相互了解。例如,如果您宣告:
class Etat<E extends Etat<E, T>, T extends Transition<E, T>> {
abstract E apply(T transition);
}
然后你可以放心
MonEtat e = ...;
e = e.apply(new MaTransition()); // compiles, and knows that MonEtat is returned
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/363409.html
