※ ChatGPTを利用し、要約された質問です(原文:Runnableのインスタンス化について)
インスタンス化可能なRunnableのコード
このQ&Aのポイント
質問文章では、インタフェースであるRunnableを直接インスタンス化する方法についての疑問が述べられています。
Runnableはjava.langパッケージに含まれているため、インスタンス化が可能なのかもしれません。
もしくは、無名クラスを使用してスーパークラスであるRunnableを継承したサブクラスを生成しているのかもしれません。
下記のコードについてです。
Runnableがインスタンス化されていますが、
どうしてそれが可能なのかが分かりません。
分からない点は
1.Runnableはインタフェースであるから、本来、直接インスタンス化は不可能であるはず。
2.しかし、Runnableはクラスライブラリjava.langパッケージに含まれている。
だからインスタンス化は可能なのかもしれない。
3.あるいは、下記のコードではメソッド内の無名クラスであるから、「new Runnable(){」の
部分でスーパークラスとしてのRunnableを継承したサブクラスを生成しているのかもしれない。
アドバイスをよろしくお願い致します。
public class Main{
public static void main(String[]args){
Runnable task = new Runnable(){
public void run(){
System.out.println("run");
}
};
Thread thread = new Thread(task){
public synchronized void start(){
System.out.println("start");
}
};
thread.start();
}
}
お礼
返信ありがとうございます。 色々と考えて頭が混乱しておりましたが、やっとスッキリしました。