package org.java.thread;
public class Thread3 {
public static void main(String[] args) {
MyThread r=new MyThread();//此行显示错误,错误提示:没有任何类型 Thread3 的外层实例可访问。必须用类型 Thread3 的外层实例(例如,x.new A(),其中 x 是 Thread3 的实例)来限定分配。
Thread t=new Thread(r);
t.start();
for (int i = 0; i < 5; i++) {
System.out.println("b");
}
}
class MyThread implements Runnable{
int i=0;
@Override
public void run() {
while(true){
System.out.println("a"+i++);
if(i==3){
break;
}
}
}
}
}我是照着书上敲的代码啊,完全一摸一样,不知道怎么就出错误了!另外,我的jdk是1.6的,应该不是jdk的问题吧,求教!!
前面加上static或者MyThread r=new MyThread();
改成: MyThread r=new Thread3().new MyThread();这就是嵌套类和内部类的区别
加static的是嵌套类,创建实例的时候不需要外部类的实例
而不加static的是内部类,必须通过外部类对象才能new
public static void main(String[] args) {
MyThread r = new MyThread();//此行显示错误,错误提示:没有任何类型 Thread3 的外层实例可访问。必须用类型 Thread3 的外层实例(例如,x.new A(),其中 x 是 Thread3 的实例)来限定分配。
Thread t = new Thread(r);
t.start();
for (int i = 0; i < 5; i++) {
System.out.println("b");
}
}
}class MyThread implements Runnable {
int i = 0; public void run() {
while (true) {
System.out.println("a" + i++);
if (i == 3) {
break;
}
}
}
}