匿名内部类 的参数

xiaoxiao2021-02-28  116

public abstract class AnonymousInnerClass { public abstract void output();

}

public class lll { public static void main(String[] args) { T1 tt = new T1(); AnonymousInnerClass aic = tt.test(10, 11); aic.output(); System.out.println("tt输出"); T1 t = new T1(); AnonymousInnerClass aic1 = t.test(8, 9); aic1.output(); System.out.println("t输出"); } } /*  * 匿名内部类 1.必须继承一个父类或实现一个接口,且只能是一个, 2.没有构造方法 3.不能有static变量和方法  * 4.为局部内部类,所有局部内部类的限制都有 5.不能是抽象的  **/ class T1 { final int k=0; AnonymousInnerClass test(final int i,final int j) { //jdk1.8形参不用final也行,低版本会报错 return new AnonymousInnerClass() { // static int i=0; 不能有static变量和方法 // int i_=i, j_=j; // 不能有构造方法,可以用构造代码块,构造代码块先于构造方法执行 // { // i_ = i; // j_ = j; // } @Override public void output() { // TODO Auto-generated method stub System.out.println(i + j+k); } }; } }

参数用final修饰

为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。

      故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。

转载请注明原文地址: https://www.6miu.com/read-56827.html

最新回复(0)