使用 Generics 定义 Java5 方法时遇到一些问题。
我试验过我可以按如下方式定义方法:
public <R extends Runnable & MyInterface, T> void submit(R runnable, T task);
因此,submit
只接受实现接口R
和Runnable
的类MyInterface
的对象的实例。
现在,假设我想做以下事情:
public <C extends Callable & MyInterface, T> submit(C<T> callable);
其中C是Callable
,它也实现MyInterface
并且返回值为T
。在这种情况下,IDE会在方法公司中报告错误:
required: class
found: type parameter C
where C,T are type-variables
定义第二个submit
方法的正确方法是什么?
答案 0 :(得分:6)
不能给出类型参数其他类型参数,例如C<T>
- 但它们可以受参数化类型的限制。使用以下内容:
public <C extends Callable<T> & MyInterface, T> submit(C callable);