接口使用摘要作为参数声明方法

Jak*_*kub 0 java interface

关于以下示例中的最佳做法,我有这个问题:

interface Request;
interface Service {
  void process(Request request)
}

class MyService implements Service;
class YourService implements Service;

class MyRequest implements Request;
class YourRequest implements Request;
Run Code Online (Sandbox Code Playgroud)

但是如何确保MyService始终接受MyRequest并且YourService只会获得YourRequest,而不是相反?明显的答案"if-instance-of-check" MyService.process(...)看起来很丑陋并且不知何故反对SOLID原则.也许有更好的方法?

也许泛型会很好解决?(但是,如何在必须在Java 1.4下运行的代码中使用它们?)

小智 6

简而言之,您正在建立一个您不想遵守的界面,因此它并不是一个理想的设计.

我的意思是,如果MyService实现了Service,那么它必须能够接受任何类型的请求.否则它不遵循定义的合同.

我想问一下为什么你在这个实例中完全拥有Service接口,如果你确实需要它(对于其他方法),是否适合进程(Request request)方法,如果子类不遵守它的话.