• 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;
    	}


  • 相关阅读:
    hdu 2819 Swap
    匈牙利算法
    hdu 1281 棋盘游戏
    hdu 2444 The Accomodation of Students(最大匹配 + 二分图判断)
    hdu 1045 Fire Net(最小覆盖点+构图(缩点))
    Python实现时钟
    挥之不去的DDOS
    随机数
    wchar_t的用法
    Visual Studio函数被警告安全,如何修改
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7055051.html
Copyright © 2020-2023  润新知