2012-05-20 43 views
-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接口的Blocking队列中取回一个Example类?

+0

@ jmort253谢谢。我忘了我可以做铸造。 – ktlim

回答

0

您是否正在使用ScheduledThreadPoolExecutor的调度方法将新任务插入到队列中? Example类的这些任务是否是instaces?

如果是的话,获得一个新的“可运行”,你可以通过它转换为实例那么当:

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

根据你的程序的流程,可能是为了核实一个好主意,之前类型匹配投射(例如使用instanceof)。

希望它有帮助。

+0

是的新任务是Example类的一个实例。我会尝试代码。 – ktlim