即使日食没有标记错误,演员如何在那里工作

Posted

技术标签:

【中文标题】即使日食没有标记错误,演员如何在那里工作【英文标题】:How is the cast working there even the eclipse is not flagging an error 【发布时间】:2021-07-05 23:03:30 【问题描述】:

ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(numThreads);

当我查看 api 文档时,fixedThreadPool() 返回了一个执行器服务实例,但在这里我们将 fixedThreadPool() 转换为 ThreadPoolExecutor,这很奇怪,因为 ThreadPoolExecutor 实现了执行器服务,谁能解释一下这个转换是如何工作的? ?

【问题讨论】:

【参考方案1】:

TheadPoolExecutor 是 ExecutorService 接口的子类。 https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/concurrent/ThreadPoolExecutor.html

正如你提到的,fixedThreadPool() 返回一个 ExecutorService 接口的实例。返回的运行时对象实例是 TheadPoolExecutor。所以你的班级演员正在工作。

【讨论】:

【参考方案2】:

只需运行以下代码:

ExecutorService te = Executors.newFixedThreadPool(10);
System.out.println(te.getClass());

输出:

class java.util.concurrent.ThreadPoolExecutor

如您所见,返回的实例是ThreadPoolExecutor。这里ExecutorService 是一个接口,ThreadPoolExecutor 实现了它。 您可以从超类型转换为子类型。所以它正在工作。

【讨论】:

以上是关于即使日食没有标记错误,演员如何在那里工作的主要内容,如果未能解决你的问题,请参考以下文章

无法完成保存。日食错误

如何向 ClutterText 演员添加超链接?

在我的日食中,每个项目都显示红十字错误。如何解决?

torrent 用户如何从其他用户那里获取大量数据?

加载共享库时出错:libboost_mpi.so.1.65.1:没有这样的文件或目录 - 即使文件在那里

日食和月食