即使日食没有标记错误,演员如何在那里工作
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
实现了它。
您可以从超类型转换为子类型。所以它正在工作。
【讨论】:
以上是关于即使日食没有标记错误,演员如何在那里工作的主要内容,如果未能解决你的问题,请参考以下文章