在接口中使用Java泛型

Pet*_*ter 5 java generics

我想创建一个具有以下方法的接口:

public interface MyInterface {
  public Class<X> getClass();
  public void handle(X message);
}
Run Code Online (Sandbox Code Playgroud)

其中X必须在两种方法中都是相同的类型.我需要这样做的原因是我得到的消息是blob需要被转换到适当的类(使用getClass)然后我想强制实现者实现一个带有相应类的handle方法(而不是假设有一个并使用反射来调用它).

看起来这样做的唯一方法是在接口中添加一个类型参数,如下所示:

public interface MyInterface<T> {
...
}
Run Code Online (Sandbox Code Playgroud)

但这不太理想,因为需要在各种其他类中指定该类型的级联依赖.有什么建议?谢谢!

Cra*_*lus 2

其中 X 在两种方法中必须是相同的类型

您不能仅通过定义强制接口的 2 个方法相互依赖。
getClass并且handle永远是两种不同的方法。
您可能应该做的是拥有 1 个方法,并将类的类型handle作为参数传递(可以是简单的或任何指示符),并委托给 a以创建要在方法内使用的适当类。 所以方法(最终)会得到合适的类来使用。EnumFactoryhandle
handle