For example, if I have an interface:
interface Executable {
void execute();
}
您无法显式实例化它。如果您尝试创建一个接口Executable的新实例,您将收到一个编译错误,提示“无法实例化类型Executable”。
然而,在尝试将接口传递给一个方法时,我意识到您可以这样做:
class Runner {
public void run(Executable e) {
System.out.println("Executing block of code...");
e.execute();
}
}
public class App {
public static void main(String[] args) {
Runner r = new Runner();
// When passing the Executable type, am I instantiating it?
r.run(new Executable() {
public void execute() {
System.out.println("Executed!");
}
});
}
}
这怎么可能?因为有new
关键字,难道不是在创建接口Executable
的新实例吗?是我理解有问题吗?请简要解释并举例说明,谢谢!