• 关于匿名内部类入参必须是final类型的解释


    public class Outer {
        public void display(final String name) {
            class Inner {
                public void showName() {
                    System.out.println(name);
                }
            }
        }
    }

    以上述代码为例,反编译内部类的class文件

    class Outer$1Inner {
        Outer$1Inner(Outer var1, String var2) {
            this.this$0 = var1;
            this.val$name = var2;
        }
    
        public void showName() {
            System.out.println(this.val$name);
        }
    }

    可以看到内部类持有了外部类以及入参的引用,如果入参不是final类型,那么在代码中修改对入参的引用后,会造成内外引用的不一致,产生预想不到的后果

  • 相关阅读:
    随机数
    质数
    猜数
    失败
    判断质数
    2019.7.21记录
    9*9乘法表
    小人
    奔跑的字母

  • 原文地址:https://www.cnblogs.com/yytxdy/p/12867353.html
Copyright © 2020-2023  润新知