"不能在块内声明接口;接口本身就是静态的"这句话出自https://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html#local-classes-are-similar-to-inner-classes

但是,我可以在下面的代码中声明一个接口.我还可以通过扩展接口来创建匿名类.

public void testing() {
    
    interface LocalInterface {
        void prints();
    }
    
    LocalInterface localInterface = new LocalInterface() {

        @Override
        public void prints() {
            System.out.println("hello world");
        }};
        localInterface.prints();
}

推荐答案

Java 16+

这取决于您使用的是哪种JDK.interface-Inside-a-方法功能是在JDK 16年引入的.enumrecord的情况也是如此.请参见JEP 395: Records.

如果您使用的是IntelliJ,当JDK设置为8时,它会显示一个错误.错误是:Local interfaces are not supported at language level '8',建议升级到JDK 16+.

enter image description here

Java相关问答推荐

Jooq隐式地将bigint转换为数字,并且索引不起作用

RDX触发ChoiceBox转换器(并按字符串值排序)

如何审查Java dtos中的自定义注释字段?

无法找到符号错误—Java—封装

Java中不同包中的类之间的配置共享

ApachePOI:不带换行的新行

JVM会优化这个数学运算吗?

Spring data JPA/Hibernate根据id获取一个列值

Jenv-相同的Java版本,但带有前缀

Java ArrayList的整数和数组的泛型

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

我的Spring Boot测试显示&IlLegalStateException:无法加载某事的ApplicationContext.

如何在我的世界中为互动增加冷却时间?

为什么有两种实现来检索数组类的组件类型?

Java.lang.invke.LambdaConversionException:实例方法InvokeVirtual的参数数量不正确

如何在Jooq中获取临时表列引用?

Java创建带有扩展通配符的抽象处理器

如何在Java中使用正则表达式拆分字符串

如何用Micrometer&;斯普肯

将@Transactional添加到Spring框架中链下的每个方法会产生什么效果?