public class Parcel7 {
public Contents contents() {
return new Contents(){
private int i = 2;
public int value(){return i;}
};
}
public static void main(String[] args) {
Parcel7 p = new Parcel7();
Contents c = p.contents();
}
}
class Contents{}
先看这个代码,注意Contents类时空的,当读者试调用c.value();打印出i的值时,即System.out.println(c.value)时会发现编译器会提示找不到value()方法,这就很奇怪了,怎么会木有呢?于是我修改了Contents的代码,即
class Contents{
private int i = 1;
public int value(){
return i;
}
}
编译器提示了在匿名类的value方法添加override标注,于是明白了,原来匿名内部类是指创建一个继承于Contents的匿名对象。
所以读者在main函数里运行System.out.println(c.value());显然输出结果是2.而不是1
