在 Java 中,是否可以使用具有两个类型参数的泛型接口作为子类型接口的基础,每个接口都有一个固定类型参数



我有一个"基本"接口:

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);
}

最新更新