1

我有一个抽象班Client和四个孩子Client1 Client2......

每个客户行:

    response = service.iszr(params);

其中 response 和 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);
  }

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

4

2 回答 2

0

我无法完全理解您实际上要做什么。

但是你想让它通用的某种方式?

尝试对象

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

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

于 2012-11-06T09:38:45.013 回答
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>

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

于 2012-11-06T09:39:53.933 回答