0

今日は面接に出演しました。インタビュアーは私にjava1.5でスレッドを書くように頼みました。java.lang.threadクラスを拡張するか、java.lang.Runnableインターフェースを実装することができます。実装されたrun()メソッドがvoid以外の戻り型を持っている可能性はありますか?Runnableインターフェースのメソッドシグネチャは

public void run();

私の答えは、「上記の署名定義のため、run()メソッドからintまたはstringを返すことはできません」でした。

インタビュアーは、java 1.5では、runメソッドからintまたはstringを返すことができると述べました。

どうすればいいのか教えていただけますか?

以下で試してみたところ、コンパイルエラーが発生しました:

public class SampleInterview implements Runnable {
    @Override
    public int run() {
        System.out.println("Start : inside run of SampleInterview");
        System.out.println("End : inside run of SampleInterview");
    }
}

私はグーグルを検索しましたが、そのような方法も見つかりませんでした。それは可能かどうか?

4

4 に答える 4

5

不可能です; あなたがインタビュアーを誤解したか、彼らが間違っていたかのどちらかです。( 「戻り値を共有変数に書き込む」だけかもしれませんが、それは要件を満たしていないようです。)

ただし、Callableインターフェイスでは値を返すことができます。

于 2012-06-10T16:20:21.820 に答える
1

CallableインタビュアーはJava1.5で導入されたインターフェースを参照していたと思います。

https://blogs.oracle.com/CoreJavaTechTips/entry/get_netbeans_6

つまり、彼はRunnableについて話しているので、彼の質問は正確ではありません。

于 2012-06-10T16:22:29.127 に答える
0

このRunnableを見てください

runメソッドにはvoidreturnタイプしかなく、それは1.4.2仕様以降です。

だから、あなたの答えは正しいです、あなたのインタビュアーがあなたをねじろうとしているのかもしれません。

于 2012-06-10T16:22:54.727 に答える
0

それは不可能です、あなたは正しかったです.................。

run() method will never return anything

それがスレッドの問題でした、

cannot have a return type, and cant throw an exception.

java 7は、これらの問題を処理しましたが

java.util.Concurrent package
于 2012-06-10T16:24:24.783 に答える