静态方法中不能new内部类

来源:互联网 发布:JAVA中的maven是什么 编辑:程序博客网 时间:2024/04/19 19:29
public class ThreadSafeDemo {public static void main(String[] args) {// TODO Auto-generated method stub<strong><span style="color:#ff0000;">new ThreadSafeDemo()</span></strong>.init(); }public void init(){ <span style="color:#ff0000;"><strong>final </strong></span>Outputer op = new Outputer();new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubwhile(true){op.output("yinhang");}}}).start();new Thread(new Runnable(){public void run(){while(true){op.output("zhuanzhang");}}}).start();}class Outputer{public void output(String name){int len = name.length();for(int i=0;i<len;i++){System.out.print(name.charAt(i)); }System.out.println();}}}


静态方法中不能new内部类!
solution:
1. new内部类时需要加final修饰(必须final!);
2. 写一个非静态方法!
3. new 外部类().非静态方法。

因为要想创建内部类的实例对象,必须要先有外部类的实例对象。

只有调用非静态方法时才会创建外部类对象,对吧!

局部内部类只能访问final局部变量!(考虑到局部内部类的生命周期)


不能不说这里设计的真是太太巧妙了!!


0 0
原创粉丝点击