为什么匿名内部类引用外部局部变量不用加 final 也不报错
Java 面试 评论 1 大约 759 字Java 代码
匿名内部类引用了局部变量,编写代码时没有用final
修饰也没有报错,因为编译器会检查后续有没有写操作,如果有,则在编译器时就会报错(包括匿名内部类方法体内也不能进行写操作)。如果只有读操作,编译器会帮忙加上final
关键字。
public class Test {
public static void main(String[] args) {
int x = 10;
Runnable runnable = new Runnable() {
@Override
public void run() {
// x = 30;
System.out.println(x);
}
};
// x = 20;
System.out.println(x);
}
}
反编译 class
可以看到:反编译后编译器帮忙加了final
关键字。
public class Test {
public Test() {
}
public static void main(String[] args) {
final int x = 10;
Runnable var10000 = new Runnable() {
public void run() {
System.out.println(x);
}
};
}
}
阅读 1013 · 发布于 2022-05-16
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
-
fHLvlxbf 1楼
e
Chrome | Windows 10 2023-07-24
随便看看
换一批
-
Java 查看容器信息的几种方式阅读 284
-
Spring Boot 运行工程 Lombok 报错阅读 855
-
Linux 之 CentOS 安装 JDK 及 JRE阅读 2858
-
HTML 禁止在移动端缩放阅读 1483
-
Nginx 配置之 PHP 路径配置阅读 2647
-
使用 Telepresence 在本地环境直接访问 Kubernetes 内部服务地址阅读 934
-
数据结构:哈希表阅读 1737
-
数据结构:环形链表-约瑟夫环阅读 1235
-
macOS M1 芯片 IDEA Debug Rust 无法运行问题阅读 434
-
HTML inpu t和 textarea 在 iOS 系统上有阴影解决办法阅读 1457