-1

私はこの問題を抱えており、解決策をインターネットで見つけることができないようです。私はここに同様のリンクを投稿しました、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クラスを取り戻す方法はありますか?

4

1 に答える 1

0

ScheduledThreadPoolExecutorのscheduleメソッドを使用して、新しいタスクをキューに挿入していますか?これらのタスクはExampleクラスのインスタンスですか?

その場合、新しい「実行可能」を取得するときに、次の方法で例にキャストできます。

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

プログラムのフローによっては、キャストする前にタイプが一致することを確認することをお勧めします(たとえば、instanceofを使用)。

それが役に立てば幸い。

于 2012-05-20T07:53:42.437 に答える