1

私は1つの抽象クラスClientと4人の子供を持ってい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

抽象クラスの宣言で、これを追加する必要があります:

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

ここで、SOME_CLASS1 は最初の引数のサブタイプであり、SOME_CLASS2 は 2 番目の引数のサブタイプです。必要にObject応じて両方を指定できます。

そして、抽象メソッドは次のようになります。

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

クラスを拡張するときは、これらの型を次のように指定する必要があります。

    class Client1 extends Client <Client1ResponseType, Client1params>

何か問題がありましたらお知らせください。

于 2012-11-06T09:39:53.933 に答える
0

あなたが実際に何をしようとしているのか、私には完全には理解できませんでした。

しかし、何らかの方法でそれを一般的にしたいですか??

オブジェクトを試す

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

このバリアントを他のジェネリックに拡張できますObject[]

于 2012-11-06T09:38:45.013 に答える