今日、メインメソッドの変数を宣言しようとすると、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 のパブリックキーワードを削除するだけでは、自分を納得させることはできません。