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()
在此代码中做什么?我见过这种类型的代码主要与比较器一起使用。请解释一下。
new A() {}
是实现接口 A 的匿名类的实例化。
仅在一个位置实现接口的类实例,因此您不想定义普通类,则此方法可能很有用。这样,您就可以在使用类的同一位置定义类。
在您的代码示例中,它似乎不是很有用,但通常通过将匿名类实例传递给接受接口类型的参数的某个方法来使用它。
下面的新 A(( 是您实例化实现接口 A 的具体类(我们称之为匿名(
的地方 A a1 = new A() {
public void printValue(){
System.out.println("A");
}
};
在代码中,接口 A 用作匿名类。如果只需要使用一次本地类,则可以使用它们。它与 lambda 表达式更相似。阅读更多:http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html阅读有关 lambda 表达式的信息:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html