zoukankan      html  css  js  c++  java
  • Java中内部类中使用外面变量为什么final修饰?

    所以final从语法上约束了实际上两个不同变量的一致性(表现为同一变量).

    我的理解:

    例如这样的代码:

    public void test(String str){
      str="abc";  
    }

    其实执行完毕了,执行的只是原来str的一个镜像文件,根本不会影响原来的变量。

    内部类是属于外部类的一个组件

    class Outer{
        
      private String str;
        
    
         class Inner{
           public void test(){
              System.out.println(str);  
            }
        }
    
      public static void main(String[] args){
        Outer.Inner in=new Outer().new Inner();
        this.str="ad";
       thsi.str="bc";        
      }      
    }

    我想,如果外部类的变量不是final的,那么在第一次生成内部类对象之后,内部类的方法执行结果都会随着外部类该变量的改变而改变。但是该变量应该是属于内部类的一个组件,也就是说你随意操作外部类对象就可以改变它生成的内部类对象,这显然是错误的。所以我们将使用的外部类对象定义为final,保证了外部类和内部类的表现的一致性。

    不是很懂。原文链接:

    http://blog.csdn.net/axman/article/details/1460544                            

  • 相关阅读:
    Codevs 1404 字符串匹配(Kmp)
    Hdu 4333 Revolving Digits(Exkmp)
    Poj 3461 Oulipo(Kmp)
    Bzoj 1877: [SDOI2009]晨跑(费用流)
    P1379 八数码难题
    P2324 [SCOI2005]骑士精神
    记 给61级讲课
    迭代加深 A* IDA* 初探
    P1347 排序
    P1888 三角函数
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6018817.html
Copyright © 2011-2022 走看看