// 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也没看到什么影响