2 will rast Will_Rast 于 2015.05.27 15:55 提问

Thinking in Java关于学习匿名内部类遇到的问题

// An anonymous inner class that performs initialization.
//A briefer version of Parcel5.java.

public interface Destination{ String readLabel();}
public class Parcel9 {
// Argument must be final to use inside anonymous inner class:
public Destination destiantion(String dest){
return new Destination(){
private String label = dest;
@Override
public String readLabel() { return label; }

        @Override
        public String toString(){ 
            return label;
        }
    };
}
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Parcel9 p = new Parcel9();
    Destination d = p.destiantion("Thinking in Java");
    System.out.println(d.toString());
}

}
书上说,如果定义一个匿名内部类,并希望它使用一个在其外部定义的对象,那么编译器将会要求其参数是final的,就像你在destination()的参数中看到的那样。如果你忘记了,将会得到一个编译时错误信息。
问题是我删除了final也没看到什么影响

Csdn user default icon
上传中...
上传图片
插入图片