2014-10-28 147 views
0
interface A 
{ 
    public void printValue(); 
} 

public class Test 
{ 
    public static void main (String[] args) 
    { 
     A a1 = new A() { 
      public void printValue() 
      { 
       System.out.println("A"); 
      } 
     }; 
     a1.printValue(); 
    } 
} 

我們不能創建接口的實例,但new A()在這段代碼中做什麼?我已經看到這種類型的代碼主要用於比較器。請解釋。關於接口概念的說明

+0

您無法實例化接口。 – Rustam 2014-10-28 10:43:21

+0

@Rustam,我在問題本身中提到過。但是這個代碼中發生了什麼是我的問題。 – NaveenBharadwaj 2014-10-28 10:44:30

+0

你有以下正確的答案,請隨時接受 – kiruwka 2014-10-28 10:45:01

回答

5

new A() {}是一個實現了接口A.

匿名類的一個實例,是一條捷徑,如果你需要的是隻在一個地方實現了接口的類的實例,可以是有用的,所以你不想定義一個普通的類。這樣你就可以在正在使用的地方定義類。

在您的代碼示例,它似乎並不十分有用,但通常它被用於通過傳遞匿名類實例的一些接受的接口類型的參數方法。

1

新的A()下面是你在哪裏實例其實現該接口的

A a1 = new A() { 
    public void printValue(){ 
    System.out.println("A"); 
    } 
};