mat*_*boy 1 java generics methods java-5
我在使用泛型定义Java5方法时遇到了一些问题.
我试验过我可以定义一个方法如下:
public <R extends Runnable & MyInterface, T> void submit(R runnable, T task);
Run Code Online (Sandbox Code Playgroud)
因此,submit只接受R实现接口Runnable和类的对象的实例MyInterface.现在,假设我想做以下事情:
public <C extends Callable & MyInterface, T> submit(C<T> callable);
Run Code Online (Sandbox Code Playgroud)
其中C是一个Callable也实现MyInterface并具有类型返回值的T.在这种情况下,IDE会在方法公司中报告错误:
required: class
found: type parameter C
where C,T are type-variables
Run Code Online (Sandbox Code Playgroud)
定义第二种submit方法的正确方法是什么?
PS:我不知道标题是否是最好的.一旦确定问题类型,请随时改进标题!
类型参数不能给出其他类型参数,例如C<T>- 但它们可以由参数化类型限制.使用以下内容:
public <C extends Callable<T> & MyInterface, T> submit(C callable);
Run Code Online (Sandbox Code Playgroud)