我有一个抽象类,在其中我想有一个抽象方法,以一个Consumer函数接口作为参数,并让子类决定应使用哪种类型的参数消费者。
我尝试过这种方式:
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 {}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句