簡體   English   中英

具有泛型參數的Java抽象方法

[英]Java abstract method with generic argument

我有以下情況:有一個抽象類( abs )和兩個從abs擴展的類( con1con2

現在,我希望Abs具有帶參數的抽象函數,其中參數的類型必須是類本身的類型。

我在abs類中嘗試了以下方法:

public abstract void foo(abs i);

以及con1con2的以下內容:

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.

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