我有一个"基地"接口:
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);
}
但是我找不到这个OR的正确语法(我认为此时更有可能)我特别关注泛型和Java泛型。
指导赞赏。
答案 0 :(得分:2)
我相信你想要的只是:
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);
}