0

はいはい、タイトルはちょっと紛らわしいです。しかし、これは私が達成したいことです:

タイプ C の要素を含むリストを返したい。また、メソッドがタイプ R の変数を受け取るようにしたい。また、C はインターフェイス、つまり C_interface を実装するクラスでなければならず、R は別のインターフェイスを実装するクラスでなければならない。 、すなわち R_interface.

私の世界では、このメソッドヘッドは機能するはずです:

public <C implements C_interface, R implements R_interface> List<C> method_name(R r)

しかし、そうではありません。Eclipse で次のエラーが発生します。

Multiple markers at this line
    - Syntax error on token "implements", , 
     expected
    - R cannot be resolved to a type
    - Syntax error on token "implements", , 
     expected
    - C cannot be resolved to a type

次のように、implements インターフェイス部分を削除すると:

public <C, R> List<C> method_name(R r)

すべて正常に動作します。そして、メソッド内の型を確認するだけでよいと思います。しかし、最初の方法でそれが可能であれば、それははるかに良いでしょう.

4

1 に答える 1

1

extends実装の代わりに使用する必要があります。これは機能します:

public class DoubleParamGeneric {

    public <C extends CInterface, R extends RInterface> List<C>  m(R r) {

        List<C> result = null; 

        // Process here

        return result;

    }
}

public interface CInterface {

}

public interface RInterface {

}
于 2015-04-27T16:00:38.080 に答える