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