簡體   English   中英

在Java中是否可以定義一個通用方法來將超類型類作為參數?

[英]In Java is it possible to define a generic method to take a supertype class as an argument?

我想實現這樣的目標:定義一個抽象方法

public abstract void registerError(*any subclass of an ErrorVO or ErrorVO e);

並在實際實現方法的子類中:

public void registerError(ASubclassOfErrorVO e);

非常感謝你的幫助!

您可以在類的聲明中使用泛型,如下所示:

static abstract class Parent<T extends ErrorVO> {
    public abstract void registerError(T e);
}

static class Child extends Parent<ASubclassOfErrorVO> {
    @Override
    public void registerError(ASubclassOfErrorVO e) {
    }
}

<T extends errorVO>中,將T定義為擴展errorVO的類。 這不能僅與方法聲明一起使用的原因是,子類中可能有許多方法可能會覆蓋父方法,只有通過在類級別聲明類型T ,編譯器才能知道哪個方法被覆蓋。

public abstract class A <T extends ErrorVO> {
    public abstract void register(T e);
}

public class B extends A<SubclassOfErrorVO> {
    @Override
    public void register(SubclassOfErrorVOe e) {
    }
}

暫無
暫無

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

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