当前位置: 代码迷 >> J2SE >> 匿名内部类解决方案
  详细解决方案

匿名内部类解决方案

热度:77   发布时间:2016-04-23 20:05:43.0
匿名内部类
编程思想第4版中有如下示例:


public interface Destination {
  String readLabel();
} ///:~

public class Parcel9 {
  // Argument must be final to use inside
  // anonymous inner class:
  public Destination destination(final String dest) {
    return new Destination() {
      private String label = dest;
      public String readLabel() { return label; }
    };
  }
  public static void main(String[] args) {
    Parcel9 p = new Parcel9();
    Destination d = p.destination("Tasmania");
  }
} ///:~


书中说道:如果定义一个匿名内部类,并且希望它使用一个在其外部定义的对象,那么编译器会要求 其参数引用是final的,如果你忘记了,将会得到一个编译时错误消息。

可是当我将上列中的final删除了,并没有如上所说得到一个编译时错误消息,并且顺利运行了。这是为什么?

------解决思路----------------------
你用的是JDK1.8?这好像是1.8的新特性,对于不会被修改的参数会在编译时自动视为final
  相关解决方案