匿名內部類(Anonymous Inner Class),在創建實例的同時給出類的定義,所有這些在一個表達式中完成。
1
2
3
4
|
Runnable rn =
new
Runnable() {
public
void
run() {
}
};
|
相當於:
1
2
3
4
5
|
class
Anomymous
implements
Runnable {
public
void
run() {
}
}
Runnable rn =
new
Anomymous();
|
可以看到前者更簡潔。(注意前者最后的分號不能省略,編譯器把整個看作一條語句)
不過,匿名內部類僅限於只實例化一次的內部類,如果內部類需要多次實例化,通常用后者。
另外,匿名內部類要么繼承一個父類,要么實現一個接口,不能兩者兼有,實現接口時也不能實現多個接口。關於該問題可以參考這貼:
匿名內部類(Anonymous Inner Class),在創建實例的同時給出類的定義,所有這些在一個表達式中完成。
1
2
3
4
|
Runnable rn =
new
Runnable() {
public
void
run() {
}
};
|
相當於:
1
2
3
4
5
|
class
Anomymous
implements
Runnable {
public
void
run() {
}
}
Runnable rn =
new
Anomymous();
|
可以看到前者更簡潔。(注意前者最后的分號不能省略,編譯器把整個看作一條語句)
不過,匿名內部類僅限於只實例化一次的內部類,如果內部類需要多次實例化,通常用后者。
另外,匿名內部類要么繼承一個父類,要么實現一個接口,不能兩者兼有,實現接口時也不能實現多個接口。關於該問題可以參考這貼: