首页 > 代码库 > java匿名内部类的使用注意事项
java匿名内部类的使用注意事项
1、首先匿名内部类要继承自抽象基类或者实现基类接口
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); } }; }
2、在类的内部不能对父类字段进行初始化。除非使用初始化块,也不能对外部类的子段进行更改
这样是不行的。//!凝视部分是不对的
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匿名内部类的使用注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。