2014-10-28 75 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"); 
    } 
};