那为什么FutureTask<Integer> fu=new FutureTask<Integer>(ca);换成Future fu就会报错
时间: 2024-04-04 16:31:08 浏览: 50
无法从 int? 转换为 int 运行时出现错误
在Java中,泛型是Java 5之后引入的一个特性,它可以让我们在编译时就能够检查类型安全,从而避免类型转换异常等问题。
在这个问题中,FutureTask是一个泛型类,它的构造函数需要传递一个Callable对象,所以声明FutureTask对象时,需要指定泛型类型,例如FutureTask<Integer> fu = new FutureTask<Integer>(ca)。
如果你将其改为Future fu = new FutureTask(ca),那么编译器就无法确定FutureTask的泛型类型是什么,因此会报错。
因此,如果你不确定FutureTask需要的泛型类型是什么,可以使用通配符类型 FutureTask<?> fu = new FutureTask<>(ca)。这样就可以不指定具体的泛型类型,但是也不能在后面的代码中使用泛型中的具体类型。
阅读全文