我如何 return 一个泛型类型,同时将另一个泛型类型作为参数,两者都需要实现一个接口?

How do I return a generic type while having another generic type as parameter, both required to implement an interace?

好的,是的,标题有点令人困惑。但这是我想要完成的:

我想要 return 一个包含类型 C 元素的列表。我希望该方法接收类型 R 的变量。并且 C 必须是 class 实现接口,即 C_interface,R 必须是实现另一个接口的 class,即 R_interface.

在我的世界里,这个方法 head 应该有效:

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

如果我删除实现接口部分,如下所示:

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

一切正常。我想我可以只检查方法中的类型。但是如果可以用第一种方式,那就更好了。

您应该使用 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 {

}