我有一个"基本"接口:
public interface TargetActionDelegate<TTarget extends Target, TAction extends Action> {
void handle(TTarget target, TAction action);
}
以及以下修复一个类型参数的相关接口:
public interface TargetDelegate<TTarget extends Target> {
<TAction> void handle(TTarget target, TAction action);
}
public interface ActionDelegate<TAction extends Action> {
<TTarget> void handle(TTarget target, TAction action);
}
现在在我看来,这些单类型固定接口应该是基本接口的超集,因为它们各自处理基本情况以及许多其他情况。此外,由于它们都包含基本情况,因此它们应该能够从基本情况扩展。
我想做的是...
public interface TargetDelegate<TTarget extends Target> extends TargetActionDelegate<TTarget, ?ANYTHING? extends Action> {
<TAction> void handle(TTarget target, TAction action);
}
public interface ActionDelegate<TAction extends Action> extends TargetActionDelegate<?ANYTHING? extends Target, TAction> {
<TTarget> void handle(TTarget target, TAction action);
}
但是我找不到适合此的语法,或者(我认为在这一点上更有可能)我对泛型和 Java 泛型非常愚蠢。
感谢指导。
我相信你想要的只是:
public interface ActionDelegate<TAction extends Action> extends TargetActionDelegate {
<TTarget> void handle(TTarget target, TAction action);
}
和
public interface TargetDelegate<TTarget extends Target> extends TargetActionDelegate {
<TAction> void handle(TTarget target, TAction action);
}