在 Java 中,是否可以使用具有两个类型参数的泛型接口作为基础来对每个具有一个固定类型参数的接口进行子类型化?
In Java, is it possible to use a generic interface with two type arguments as a base to subtype interfaces with one fixed type argument each?
我有一个"base"接口:
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 泛型感到很愚蠢。
感谢指导。
我相信你想要的只是:
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);
}
我有一个"base"接口:
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 泛型感到很愚蠢。
感谢指导。
我相信你想要的只是:
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);
}