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

Ahm*_*asr 3 java oop static anonymous-class

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

你好,我正在关注 YouTube 上的一个视频解释,它正在谈论 thestatic blocks和 the static variables,并且你不能在anonymous 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();
    }
}


Run Code Online (Sandbox Code Playgroud)

现在当我在我的计算机上运行时(不会给出错误)

在此输入图像描述

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

在此输入图像描述

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

是否在室内static blocks工作?static variablesanonymous inner classes

rzw*_*oot 6

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

  • 这是作为 [JEP 395:记录](https://openjdk.org/jeps/395) 的一部分添加的。 (4认同)