【发布时间】:2023-04-01 15:22:01
【问题描述】:
我有一个抽象超类和 2 个扩展它的类
public abstract class MyAbstract {}
public class A extends MyAbstract {}
public class B extends MyAbstract {}
我有一个接口,它有一个将 MyAbstract 的子类作为参数的方法
public interface MyInterface {
<T extends MyAbstract> void someMethod(T param);
}
然后我有一个实现该接口的类
public class AnotherClass implements MyInterface {
@Override
<T extends MyAbstract> void someMethod(T param) {}
}
但我只想允许在方法中使用MyAbstract 的特定子类。
到目前为止,我尝试了以下几件事:
<T extends A> void someMethod(T param); //doesn't override the method
void someMethod(A param); //doesn't override the method
是否有一个接口采用通用参数并且该接口的实现者指定该参数的更受限制的版本,或者这根本不可能?
【问题讨论】:
-
你的问题体现了用词的矛盾。根据定义,具有不同参数的方法不可能被覆盖。
标签: java generics inheritance interface