抽象方法应该是什么参数

时间:2012-11-06 09:35:20

标签: java

我有一个抽象类Client和4个孩子Client1 Client2 ......

每个客户行:

    response = service.iszr(params);

其中响应​​和参数取决于类

Class1中的

Client1ResponseType response
Client1params params

现在我想添加到抽象类方法:

  protected abstract void sendRequest(?? response, ?? params);

但我不知道应该是什么类型

我试着这样想:

  protected abstract <I, O> void sendRequest(I input, O output);

和孩子们

  @Override
  protected <Client1ResponseType, Client1params> void sendRequest(Client1ResponseType input,
      Client1params output) {
    output = service.iszrRobCtiAifo(input);
  }

但没有成功。有编译错误。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我无法完全理解你究竟想要做什么。

但有些方法你想让它变得通用吗?

尝试对象

  protected abstract void sendRequest(Object response, Object params);

您可以将此变体扩展到其他代理,例如Object[]

答案 1 :(得分:0)

在抽象类的声明中,您需要添加:

    abstract class Client <I extends SOME_CLASS1, O extends SOME_CLASS2>

其中SOME_CLASS1是您的第一个参数的子类型,SOME_CLASS2是您的第二个参数的子类型,如果需要,两者都可以是Object

你的抽象方法是这样的:

    protected abstract void sendRequest(I response, O params);

扩展类时,需要指定以下类型:

    class Client1 extends Client <Client1ResponseType, Client1params>

如果您有任何问题,请告诉我。