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


  • 相关阅读:
    hashcode() equals()
    Java7/8 HashMap ConcurrentHashMap
    mysql联合索引
    spring 事务传播
    SpringMVC Controller 单例 多例
    Java进阶 线程安全
    JVM—JVM内存模型
    jvm中堆和栈的区别
    spring boot springmvc视图
    springcloud eureka.instance
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7055051.html
Copyright © 2020-2023  润新知