2012-05-20 93 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