[英]In Java, how to let child class decide of which type parameter class use as overridden method argument?
I have an abstract class in which I want to have an abstract method taking in argument a Consumer functional interface and let the child class decide which type should parameterize the consumer.我有一个抽象类,其中我希望有一个抽象方法接受消费者功能接口的参数,并让子类决定哪种类型应该参数化消费者。
I tried it that way:我是这样试的:
public void show(Consumer<?> validationHandler) {
this.validationHandler = validationHandler;
stage.show();
}
But in the child class, it says that it isn't a correct override:但是在子类中,它说它不是正确的覆盖:
@Override
public void show(Consumer<Protection> validationHandler) {
super.show(validationHandler);
}
My goal is to be able to call this method on a child instance and having the correct type provided in my consumer lambda that I will pass.我的目标是能够在子实例上调用此方法,并在我将传递的消费者 lambda 中提供正确的类型。
Do you have any idea how to proceed?你知道如何进行吗?
Make your base class generic (with generic type T), and make show()
accept a Consumer<T>
(or a Consumer<? super T>
. Make the subclass extend BaseClass<Protection>
.使您的基类泛型(具有泛型类型 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.