匿名內部類是 Java 中的一種內部類(定義在另一個類中的類),它沒有名稱。它們通常用於實現介面或擴充套件類的簡單版本,而無需顯式宣告一個獨立的類。匿名內部類特別適合於建立那些僅用一次的類例項。
特點:
無名稱:匿名內部類沒有名稱,建立時直接透過 new 關鍵字後跟介面或類名來定義。
一次性使用:它們通常用於實現只需要一次使用的類——例如,在作為引數傳遞時或在方法內部建立時。
簡潔的語法:它們允許你在需要例項化物件的地方快速實現一個介面或類,無需建立一個實際的類定義。
訪問外部類的成員:匿名內部類可以訪問其外部類的成員變數和方法。
假設我們有一個簡單的介面 Greeting:
interface Greeting { void sayHello(); }
我們可以使用匿名內部類來實現這個介面,而不是建立一個實現了 Greeting 介面的命名類:
點選檢視程式碼
public class Test {
public static void main(String[] args) {
// 使用匿名內部類實現 Greeting 介面
Greeting greeting = new Greeting() {
@Override
public void sayHello() {
System.out.println("Hello, World!");
}
};
greeting.sayHello(); // 輸出:Hello, World!
}
}
在這個例子中,我們在 Greeting 介面後面使用了 {} 來提供 Greeting 介面的匿名實現,並覆蓋了 sayHello 方法。這個匿名內部類的例項被建立並賦值給 greeting 變數。然後我們透過這個變數呼叫了 sayHello 方法。
匿名內部類提供了一種快速實現介面或擴充套件類的方法,尤其是當這種實現只需要在程式中一處使用時。這使得程式碼更加緊湊,但也可能犧牲了程式碼的可讀性,特別是當實現變得複雜時。