如何将超类转换为子类

时间:2012-05-20 07:44:47

标签: java concurrency runnable

我有这个问题,我似乎无法在互联网上找到解决方案。我在这里发布了一个类似的链接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接口的阻塞队列中取回一个Example类?

1 个答案:

答案 0 :(得分:0)

您是否使用ScheduledThreadPoolExecutor的计划方法将新任务插入队列? 这些任务是否属于Example类吗?

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

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

根据程序的流程,最好在投射前验证类型是否匹配(例如使用instanceof)。

希望它有所帮助。

相关问题