[英]Java abstract method with generic argument
我有以下情況:有一個抽象類( abs
)和兩個從abs
擴展的類( con1
和con2
)
現在,我希望Abs具有帶參數的抽象函數,其中參數的類型必須是類本身的類型。
我在abs
類中嘗試了以下方法:
public abstract void foo(abs i);
以及con1
和con2
的以下內容:
public abstract void foo(con1 i);
public abstract void foo(con1 i);
但這沒用。 解決此類問題的一般方法是什么?
不,基本上這沒有實現該方法。 有了聲明,我應該可以寫:
abs x = new con1();
abs y = new con2();
x.foo(y);
聽起來像您想要的:
public abstract class Abstract<T extends Abstract<T>>
{
public abstract void foo(T t);
}
然后:
public final class Concrete1 extends Abstract<Concrete1>
{
@Override public void foo(Concrete1 x) { ... }
}
請注意,這不能完全強制執行,因為您仍然可以這樣寫:
public final class Evil extends Abstract<Concrete1>
...但是至少當每個人都在“按規則行事”時它才起作用。
con1和con2上的方法定義應該相同:
@override
public abstract void foo(abs i)
{ ...
在這里,注解會檢查您是否真的在此處覆蓋父級。 Google“繼承性和多態性”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.