标签:java匿名内部类
like this
abstract class Seed{ int cnt; public Seed(int x){ cnt=x; } abstract void showInfo(); } class Apple{ int num=300; public Seed getSeed(final int x){ return new Seed(x){ public void showInfo(){ System.out.println("The apple's seeds are "+num); } }; }
这样是不行的,//!注释部分是不正确的
abstract class Seed{ int cnt; public Seed(int x){ cnt=x; } abstract void showInfo(); } class Apple{ int num=300; public Seed getSeed(final int x){ return new Seed(x){ //!num=200; //!cnt=100; public void showInfo(){ System.out.println("The apple's seeds are "+num); } }; }原因:
所谓匿名内部类与实名类本质上是相同的,而在类的内部对子段初始化的位置只能是声明的位置或者在构造函数的内部,而对字段值的更改只能在该类方法的内部。在其它位置对字段值的更改是无效的,因为此时的更改和操作没有机会执行,所以编译器会报错。而在初始化块中对字段的操作和更改是可以的。
这样也是不行的
public class Wrapping{ public int a; public int b; //!a=100; }
标签:java匿名内部类
原文地址:http://blog.csdn.net/cjc211322/article/details/40020891