1

我在使用Generics定义Java5方法时遇到了一些问题。

我试验了一下,我可以定义一个方法如下:

public <R extends Runnable & MyInterface, T> void submit(R runnable, T task);

因此,submit只接受R实现接口的类对象的实例RunnableMyInterface. 现在,假设我想做如下的事情:

public <C extends Callable & MyInterface, T> submit(C<T> callable);

其中 C 是 a Callable,它也实现MyInterface并具有 type 的返回值T。在这种情况下,IDE 会在方法的固件中报告错误:

required: class
found: type parameter C
where C,T are type-variables

定义第二种submit方法的正确方法是什么?

PS:我不知道这个标题是不是最好的。请在确定问题类型后随时改进标题!

4

1 回答 1

6

类型参数不能被赋予其他类型参数,例如C<T>- 但它们可以受参数化类型的限制。使用以下内容:

public <C extends Callable<T> & MyInterface, T> submit(C callable);
于 2013-04-17T13:56:21.530 回答