在Java中,匿名類和內部類都是常用的編程技巧。它們的不同之處在于,內部類有名稱,而匿名類沒有名稱。在下面的段落中,我們將更詳細地討論這兩種類的區別。
內部類
內部類不同于普通類,它是聲明在另一個類的內部。內部類可以訪問外部類的所有成員,包括私有成員。內部類分為靜態內部類和非靜態內部類(成員內部類)兩種:
public class Outer { private int outerVar; public void outerMethod() { // 外部類方法內部定義內部類 Inner inner = this.new Inner(); } class Inner { void innerMethod() { // 內部類可以訪問外部類的私有成員 int var = outerVar; } } static class StaticInner { // 靜態內部類不能訪問外部類的非靜態成員 } }
匿名類
匿名類是一種特殊的內部類,它沒有名字。它通常用于創建只使用一次的類的對象。匿名類的定義和使用通常發生在同一個位置:
interface MyInterface { void doSomething(); } public class AnonymousClassDemo { public static void main(String[] args) { // 創建一個匿名類的對象 MyInterface obj = new MyInterface() { public void doSomething() { System.out.println("Do something!"); } }; obj.doSomething(); // 輸出 Do something! } }
在上面的例子中,我們創建了一個實現了MyInterface接口的匿名類對象,并調用了它的doSomething方法。
總結
內部類和匿名類是Java中常用的編程技巧。內部類可以訪問外部類的所有成員,而匿名類通常用于創建只使用一次的類的對象。通過合理地使用這兩種類,我們可以使我們的代碼更加靈活、簡潔。