静的と非静的の概念に苦労しています。私はこの Thread サンプル プログラム (修正済み、元はここから) を勉強していますが、内部クラスを使用するとエラーが発生します。
Error: non-static variable this cannot be referenced from a static context
エラーの原因となるコードは次のとおりです。
public class Main2 {
public static void main(String[] args) {
Thread simple = new Thread(new SimpleTask());
simple.start();
}
class SimpleTask implements Runnable {
public void run() {
}
;
}
class DaemonTask implements Runnable {
public void run() {
int i = 0;
}
}
}
ただし、3つのクラスになるように分割すると、エラーは発生しません..つまり、次のようにします。
public class Main2 {
/* contents */
}
class SimpleTask implements Runnable {
/* contents */
}
class DaemonTask implements Runnable {
/* contents */
}
その後、問題なくコンパイルされます。それを別のクラスに分割することがなぜ重要なのですか?