由于MyRunner是Myclass类的内部类(且不是静态的),如果你不构造一个Myclass类则不存在这个内部类存在的环境,故此你么写成new Myclass().new MyRunner()。而后面的return new MyRunner();他有一个缺省的Myclass类的实例句柄(就是this)。要么你吧内部类定义为静态的你可以这样在main里构造:(new Thread(new Myclass.MyRunner())).start();
调试欢乐多
public static void main(String[] args)是静态方法,就是说该方法只属于某个类,而不属于具体的某个对象。
如果你在main()方法中直接调用getRunner()也不可以,因为在没有构造对象之前不能访问其中的任何方法,对于内部类也是一样,你没有构造外部类就不能访问内部类。
例如如果将
public MyRunner getRunner(){
return new MyRunner();
}
更改成为
public static MyRunner getRunner(){
return new MyRunner();
}
则也必定会报错,关键是理解静态方法只属于类,而不属于某个特定的实例,这应该是该问题的关键所在,不知道说的对否。
的了解。