原文:关于内部类引用外部变量的理解

观察下面代码 ,如果把第五行的注释打开则编译不通过,因为方法内的变量需要是final变量或者事实上的final变量 effectively final 才可以传入匿名内部类被使用 ,把第五行注释加上之后,用java 可以编译通过,此时变量d是事实上的final变量,jvm可以放心地把该变量复制到内部类中 ,为什么需要把d复制一份到内部类 因为test 方法的生命周期比内部类要短,导致test 执 ...

2019-08-07 23:56 0 985 推荐指数:

查看详情

Java内部类引用外部类中的局部变量为何必须是final问题解析

今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广 ...

Mon May 08 00:36:00 CST 2017 0 1220
Java内部类引用外部类中的局部变量为何必须是final问题解析

今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广 ...

Sat Oct 12 00:49:00 CST 2013 0 5284
java中内部类为什么会持有外部类引用?

当我们分析内存泄漏的场景时,总会想到不能在内部类中做耗时操作,因为它会持有外部类的因为,导致外部类的实例在生命周期结束的时候没有办法及时释放,这就造成了内存泄漏. 好像这就是一个公理一样,就是人们说着说着就都认可它了,却没有人能说出个为什么. 今天我们就来分析一下为什么吧 首先来看一个 ...

Wed Nov 14 22:50:00 CST 2018 0 4207
Java外部类可以访问内部类private变量

在讲Singleton时我举例时用过这样一段代码: 相信你一定发现了一个问题:外部类中的getInstance()方法调用了内部类SingletonHolder中的private变量instance。 这就像是: 老师可以检查教室中的学生书包里有没有卫生巾。 坑爹 ...

Tue Mar 21 04:31:00 CST 2017 0 2520
一个注意事项:内部类引用外部变量必须是final的

  之前写过一个项目,好久没更新了,最近翻起以前的代码,发现在这里报了一个错。(现在转到Intellij了,从前在Eclipse luna中是可以编译通过的,Eclipse mars也会报错,JDK版本都是1.8,还没去查为什么)   为什么在内部类引用外部变量时,必须声明为final ...

Tue Aug 16 03:19:00 CST 2016 1 5201
java内部类外部类

1.使用static可以声明一个内部类, 可以直接在外部调用 2.不使用static声明一个内部类 ,使外部调用 3.在方法中定义内部类 ,使外部调用 ...

Sun Oct 12 20:21:00 CST 2014 0 2636
内部类外部类的区别和联系

其实外部类内部类是一个相对的定义。 类A中有类B,那么类A自然就是外部类了,类B就是内部类外部类的访问权限只有两种:public和(default)。 但是内部类因类型不同所以对应的访问权限也不一样。 内部类可以使用外部类的任何变量和方法,但是外部类必须要实例化内部类才可以使 ...

Mon Aug 13 18:01:00 CST 2018 0 3425
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM