静态块和变量可以在 Java 中的匿名内部类中使用吗?

Can static blocks and variables be used inside anonymous inner classes in Java?

提问人:Ahmed nasr 提问时间:5/27/2023 最后编辑:Ahmed nasr 更新时间:5/27/2023 访问量:48

问:

静态块和静态变量是否在 java 中的匿名内部类中工作?

您好,我正在关注 YouTube 上的视频解释,它正在谈论 和 并且您不能在static blocksstatic variablesanonymous inner classes

代码

package Anonymous;

public class main {
    public static class TestClass {

        public void TestMethod() {
            System.out.println("test");
        }
        
    }
    public static void main(String[] args) {
        TestClass test = new TestClass() {
            static int p = 5;
            final static int y = 5;

            static {

            }

            @Override
            public void TestMethod() {
                System.out.println("test 2");
            }
        };
        test.TestMethod();
    }
}


现在,当我在计算机上运行时(没有出现错误)

enter image description here

但是在YouTube视频或在线编译器中(它给出了这个错误)

enter image description here

那么,造成这种差异的原因是什么?

在里面做和工作还是不做?static blocksstatic variablesanonymous inner classes

java oop 静态 匿名类

评论

4赞 Jim Garrison 5/27/2023
显然它有效,你不知道视频中使用的是哪个版本的 Java。请把这看作是一个对象课程,以适当的信任级别放在你在互联网上找到的东西上。正如戈尔巴乔夫曾经说过的那样,“信任但要验证”。那里有很多垃圾,你应该更信任你的编译器/IDE,而不是一些随机的互联网视频。
0赞 tgdavies 5/27/2023
从 SO 上的问题来看,YouTube 教程并不是学习 Java 的最佳方式。

答:

6赞 rzwitserloot 5/27/2023 #1

直到 java 版本 15,您不能这样做。从 java 16 开始,您可以。显然,在您的计算机上,您运行的是 java 16 或更高版本,而 youtube 正在运行 15 或更低版本。

评论

4赞 meriton 5/27/2023
这是作为 JEP 395:记录的一部分添加的。