簡體   English   中英

Java 兩路參數化 class

[英]Java two-way parameterized class

是否可以在 java 中毫無問題地執行此操作? 我的 IDE 將我的代碼突出顯示為“參數化 class 'Etat' 的原始使用”和“作為原始類型 'java.util.ArrayList' 的成員對 'add(E)' 的未經檢查的調用”我的代碼:

public abstract class Etat<T extends Transition> {}
public abstract class Transition<E extends Etat> {}

您可能正在尋找:

class Etat<T extends Transition<E, T>, E extends Etat<E, T> {}
class Transition<T extends Transition<E, T>, E extends Etat<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM