我想创建一个具有以下方法的接口:
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)
但这不太理想,因为需要在各种其他类中指定该类型的级联依赖.有什么建议?谢谢!
其中 X 在两种方法中必须是相同的类型
您不能仅通过定义强制接口的 2 个方法相互依赖。
getClass并且handle永远是两种不同的方法。
您可能应该做的是拥有 1 个方法,并将类的类型handle作为参数传递(可以是简单的或任何指示符),并委托给 a以创建要在方法内使用的适当类。
所以方法(最终)会得到合适的类来使用。EnumFactoryhandlehandle
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |