-7

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

4

3 に答える 3