-1

我有这个问题,我似乎无法在 Internet 上找到解决方案。我在这里发布了一个类似的链接,http://www.coderanch.com/t/581517/java/java/cast-superclass-subclass#2645691

class Example implements Runnable {
       String ID;

       public Example (String ID) {
            this.ID = ID;
       }
       public void run() {
     // Code to do something.
   }
}

我正在使用 ScheduledThreadPoolExecutor 类。在该类下,有一个名为 getQueue 的方法。然而 getQueue 返回一个 Runnable 接口的 BlockingQueue。有没有办法从 Runnable 接口的阻塞队列中取回示例类?

4

1 回答 1

0

您是否使用 ScheduledThreadPoolExecutor 的 schedule 方法将新任务插入队列?这些任务是 Example 类的实例吗?

如果是这样,那么在获得新的“可运行”时,您可以通过以下方式将其转换为示例:

Runnable r = getRunnableFromQueue();
Example e = (Example) r;

根据程序的流程,最好在强制转换之前验证类型是否匹配(例如使用 instanceof)。

希望能帮助到你。

于 2012-05-20T07:53:42.437 回答