关于new,求解

前几天看到这样的代码:

写道
public DefaultActionMapper() {
prefixTrie = new PrefixTrie() {
{
put(METHOD_PREFIX, new ParameterAction() {
public void execute(String key, ActionMapping mapping) {
if (allowDynamicMethodCalls) {
mapping.setMethod(key.substring(
METHOD_PREFIX.length()));
}
}
});
}
};
}

 没看明白prefixTrie = new PrefixTrie(){{...}};是个什么说法,望指教。

public static Map a=new HashMap(){
{
put(1, "111");
put(2, "222");

  }

};

实例化的时候 把值给给了! 常用写法

叫匿名内部类实现接口把~

就是在类里面实现PrefixTrie接口,然后就是作为参数传递~了

这个是struts2中的类DefaultActionMapper,之前我也看过这个。就是在调用构造函数的时候进行一个赋值

同上;
匿名内部类 ,匿名类可以创建,接口,抽象类,与普通类的对象。创建接口时,必须实现接口中所有方法。

可以理解为新建了一个子类,或者实现类都可以
,然后new了一个这个子类的对象

一般写线程也经常用new Thread(){public void run(){...}}.start()

就是不用具体去写一个类了,在用的时候可以直接去改这个类的内部

你是不是没看完呀,这是一个构造方法,在里面创建对象,没错呀,那个prefixTrie = new PrefixTrie(){{...}};中的PrefixTrie应该是一个抽象类或接口,在这里用内部类是为了初始化默认的配置。看一下那个JavaSwing中有很多的,那些事件的监听,很多都是用内部类的方式实现的...

匿名内部类

如果你学习Java swing图形界面编程的话应该就很多,比如:
Button.setOnClickListener(new OnClickListener(){
public void onClick()....
});

很多这样的方法

匿名类实现