`
flash59
  • 浏览: 96413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java ArrayList的特殊初始化方式。。。。

阅读更多
在看struts2.0源码的时候发现这样的语法,其中add方法是ArrayList自带的,我不明白这样的初始化的原因,和初始化之后,extensions 指向的对象个什么状态?
我知道ArrayList其实在维护一个数组,那这个初始化方式产生了几个数组?
    List extensions = new ArrayList() {{ add("action");}};
分享到:
评论
1 楼 flash59 2008-02-01  
我想我搞明白了:
    ArrayList是一个类,如果这样写:
    ArrayList list=new ArrayList(){{add("action");}};
   ArrayList作为匿名的内部类生成一个实例,把引用赋给list
   {add("action");}作为这个内部类的初始化代码块而 存在的
    这种写法相当于:
   
   
    public class Test {
	private String a;
	{add("asdfasdf");}   //相当于在这里写初始化代码块
	public void add(String a)
	{
		this.a=a;
	}
   	public String getA() {
		return a;
	}
	public void setA(String a) {
		this.a = a;
	}
          public static void main(String[] str)
    {
    	Test test=new Test ();
    	System.out.println(test.getA());
    }

}
    

相关推荐

Global site tag (gtag.js) - Google Analytics