簡體   English   中英

在 Java 中,如何讓子類決定使用哪種類型的參數類作為重寫的方法參數?

[英]In Java, how to let child class decide of which type parameter class use as overridden method argument?

我有一個抽象類,其中我希望有一個抽象方法接受消費者功能接口的參數,並讓子類決定哪種類型應該參數化消費者。

我是這樣試的:

public void show(Consumer<?> validationHandler) {
    this.validationHandler = validationHandler;
    stage.show();
}

但是在子類中,它說它不是正確的覆蓋:

@Override
public void show(Consumer<Protection> validationHandler) {
    super.show(validationHandler);
}

我的目標是能夠在子實例上調用此方法,並在我將傳遞的消費者 lambda 中提供正確的類型。

你知道如何進行嗎?

使您的基類泛型(具有泛型類型 T),並使show()接受Consumer<T> (或Consumer<? super T> 。使子類擴展BaseClass<Protection>

class BaseClass<T> {
    public void show(Consumer<T> validationHandler) { //  or Consumer<? super T>
    }
}

class SubClass extends BaseClass<Protection> {
    @Override
    public void show(Consumer<Protection> validationHandler) { //  or Consumer<? super Protection>
        super.show(validationHandler);
    }
}

class Protection {}

暫無
暫無

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

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