在java中使用匿名内部类

时间:2013-05-21 02:47:33

标签: java anonymous-inner-class

public SampleBehaviour otherway(final String st) {
    return new SampleBehaviour() {
        private String str = st;

        @Override
        public void print() {
            System.out.println("val:"+val);
        }

    };
}

SampleBehaviour是一个界面。

实现接口的类必须定义方法行为,是否在接口中使用了某些变量?

为什么方法参数必须是最终的?我没有得到这种用法的实时应用程序?这背后真实的是什么?

如果它有用,为什么C ++不会有这样的东西?

1 个答案:

答案 0 :(得分:0)

来自The Java Language Specification,第8.1.3节:

  

使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final。

维基百科说,内部类需要保留自己的变量副本,因为它可以在外部类超出范围后继续存在;为了防止具有相同的变量名称引用两个不同的位置,他们强制将变量固定到位。