我如何 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 {
}
好的,是的,标题有点令人困惑。但这是我想要完成的:
我想要 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 {
}