在 Java 中,接口是抽象构造,无法自行实例化,因为它们缺乏具体的实现——它们通过方法签名定义契约,而不提供这些方法的主体。通常,接口由具体类实现或由其他接口扩展。
然而,当我在学习 Java 时偶然发现匿名类时,我惊讶地发现它们似乎允许接口的直接实例化。匿名类语法允许您动态提供接口方法的实现。
这里有一个例子来说明这个概念:
interface Greeter {
void greet();
}
public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter() {
@Override
public void greet() {
System.out.println("Hello, world!");
}
};
greeter.greet();
}
}
在上面的示例中,Greeter 是一个具有单个方法greet 的接口。在 main 方法中,我使用匿名类创建了一个 Greeter 的“实例”,该类提供了greet 方法的实现。
匿名内部类不是接口的发起者。 它创建一个实现所引用接口的匿名类。
这只是一个类及其实现的本地启动。
就像评论中提到的abra一样,你如何定义接口它是一个函数式接口,从java 8开始你的代码可以重写为:
interface Saludadores {
void saludar();
}
public class training3 {
public static void main(String[] args) {
Saludadores saludador = () -> System.out.println("Hola, mundo!");
saludador.saludar();
}
}