一般匿名內(nèi)部類的創(chuàng)建方式
以創(chuàng)建線程為例
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run");
}
}).start();
或
new Thread() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run");
}
}.start();
使用兩個(gè)大括號(hào)的方式
new Thread() {
{
start();
}
@Override
public void run() {
System.out.println("heo");
}
};
這也能執(zhí)行start摆昧,看一下為什么:
反編譯:
class DoubleBrace$1 extends Thread
{
public void run()
{
System.out.println("heo");
}
DoubleBrace$1()
{
start();
}
}
發(fā)現(xiàn)另外一個(gè)大括號(hào)內(nèi)容是在構(gòu)造器里面執(zhí)行的。不過(guò)在構(gòu)造器里面啟動(dòng)線程不安全顾稀,不推薦這樣創(chuàng)建器钟。
可以像下面創(chuàng)建HashMap:
new HashMap<String, Object>() {
private static final long serialVersionUID = 1L;
{
put("pluginName", 1);
}
};