【发布时间】:2012-11-06 12:27:51
【问题描述】:
我了解此代码不合法:
class Popcorn {
public void pop() {
System.out.println("popcorn");
}
}
class Food {
Popcorn p = new Popcorn() {
public void sizzle() {
System.out.println("anonymous sizzling popcorn");
}
public void pop() {
System.out.println("anonymous popcorn");
}
};
public void popIt() {
p.pop(); // OK, Popcorn has a pop() method
p.sizzle(); // Not Legal! Popcorn does not have sizzle()
}
}
那么调用 sizzle 方法的方法是什么?
【问题讨论】:
-
为爆米花添加滋滋声,别无他法
-
我最初的反应是问为什么你会通过向匿名类添加额外的公共方法来实现。
-
new Popcorn() { ... }.sizzle(); -
@TomHawtin-tackline 这就是我想要的。因为如果你不能调用该方法,这是一个不好的例子,它来自 Kathy bates 的官方 OCJP 学习指南
标签: java inner-classes anonymous-inner-class