今天突然意识到,当我尝试为 main 方法声明一个变量时,Java 从来没有为局部变量指定访问级别。我也尝试给它一个访问级别修饰符,但它没有编译。错误是: 参数 t1 的非法修饰符;只允许final
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
}
}
众所周知,我们需要使用public protected package private static final等来指定 java 类的成员变量。
但是我们从不为类方法(静态或非静态)变量这样做。
我整天都被这个概念所困扰。以前,我只是照常写java代码,但没有意识到这种现象。
你能给我一些提示吗?我不能仅仅通过消除t1 的公共关键字来说服自己。