JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰
今天在学习ThreadLocal类,在一个方法中写了一个匿名内部类,然后使用方法中的局部变量,发现不用加final修饰变量
但是如果修改了变量值,在ide中会报红显示,局部变量必须是有效的final类型
附上代码,可以学习一下ThreadLocal
package com.edou.test;
import org.junit.Test;
/**
* @ClassName TestInnerClass
* @Description 测试匿名内部类访问局部变量是否加final
* @Author 中森明菜
* @Date 2020/9/27 8:46
* @Version 1.0
*/
public class TestInnerClass {
@Test
public void testRef() {
ThreadLocal<String> threadLocal = new ThreadLocal<>();
threadLocal.set("test1");
Runnable r1 = () -> {
threadLocal.set("test2");
String result = threadLocal.get();
// test2
System.out.println(result);
};
r1.run();
Runnable r2 = (