zoukankan      html  css  js  c++  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;
    	}


  • 相关阅读:
    Retrofit2.0+OkHttp打印Request URL(请求地址参数)
    Java如何从HttpServletRequest中读取HTTP请求的body
    解决gradle:download特别慢的问题
    20180531
    20180531 运算符重载
    20180531 二叉树
    20180530
    20180529-2
    20180529-1
    20180529
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7055051.html
Copyright © 2011-2022 走看看