今日、メインメソッドの変数を宣言しようとすると、Java がローカル変数のアクセスレベルを指定しないことに突然気付きました。また、アクセス レベル修飾子を指定しようとしましたが、コンパイルされません。エラー: パラメータ t1 の修飾子が不正です。最終のみが許可されます
package myThread;
import java.lang.Thread;
import java.lang.String;
import java.lang.System;
public class PrintThread extends Thread{ //extends Thread class
private long sleepTime;
public PrintThread(String name)
{
super(name);
this.sleepTime = (long) (java.lang.Math.random() * 5000);
System.out.println("Thread: " + getName() + ", sleepTime: " + sleepTime);
}
public void run() // override run method
{
System.out.println(getName() + " go to sleep...");
try
{
sleep(sleepTime);
} catch (InterruptedException e)
{
e.getMessage();
}
System.out.println(getName() + " out of sleep!");
}
public static void main(String[] args)
{
public PrintThread t1 = new PrintThread("T1"); // CANNOT COMPILE
t1.start(); // start thread by start() method
}
}
ご存知のように、Java クラスのメンバー変数を指定するにはpublic protected package private static finalなどを使用する必要があります。
しかし、クラス メソッド (静的であろうとなかろうと) 変数に対してこれを行うことはありません。
私は一日中この概念に固執していました。以前は、いつものように Java コードを書いていましたが、この現象に気付きませんでした。
ヒントを教えてください。t1 のパブリックキーワードを削除するだけでは、自分を納得させることはできません。