这个问题已经在这里有了答案:????????????>????????????How are Anonymous inner classes used in Java?????????????????????????????????????18个
例如,如果我有一个接口:
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的新实例?有什么我不懂的吗?一个简短的解释和一些例子,不胜感激!