菜鸟求助,lambda表达式使用问题

static {

        Thread t1 = new Thread(new Runnable() { 
             @Override     
             public void run() {
                System.out.println(abc); //works

            }
        });

        Thread t2 = new Thread(() -> {
            System.out.println(abc);  //illegal forward reference
        });

        t1.start();
        t2.start();
    }

    private static String abc = "test"; //declare after static block

    public static void main(String args[]) {
        System.out.println("main:" + DataAnalyseTest.abc);
    }
第一种声明方式为什么可以使用后面的静态变量但是第二种不可以。。。#Java#
全部评论
https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.2.3 Workaround: Class SomeClass{     static {         Thread t1 = new Thread(new Runnable() {             @Override                 public void run() {                 System.out.println(abc); //works             }         });         Thread t2 = new Thread(() -> {             System.out.println(SomeClass.abc);             //                 ^-- now works         });         t1.start();         t2.start();     }     private static String abc = "test"; //declare after static block     public static void main(String args[]) {         System.out.println("main:" + DataAnalyseTest.abc);     } }
点赞 回复 分享
发布于 2019-11-19 22:04
Mark一下,难不成是这种lambda表达式的用法≠匿名内部类的用法?
点赞 回复 分享
发布于 2019-11-14 17:09

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇 延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗 就业数据都在造假,真实的就业困难不去解决 一个个真是好样的
从今天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务