You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中是否允许在方法内部声明interface?

关于方法内部声明接口的问题

你提到的"不能在代码块内部声明interface;interface本质上是静态的"是基于旧版Java规范的说法——在Java 16之前,确实不允许在方法、代码块这类局部作用域里定义接口。但Java 16引入了**本地接口(Local Interface)**的特性,允许在局部作用域(比如方法内部)声明接口,你的代码正是利用了这个新特性。

关键点说明:

  • 本地接口本身确实是静态的:即使你没显式加static修饰符,方法内部的接口默认就是静态的,它无法访问外部类的非静态成员(除非是final/有效final的局部变量),这和"interface本质是静态的"说法并不矛盾。
  • 你的代码完全合法:在Java 16及以上版本中,这段代码可以正常编译运行,执行testing()方法会输出hello world。

附上你的代码(格式调整后):

public void testing() {
    
    interface LocalInterface {
        void prints();
    }
    
    LocalInterface localInterface = new LocalInterface() {
        @Override
        public void prints() {
            System.out.println("hello world");
        }
    };
    localInterface.prints();
}

内容的提问来源于stack exchange,提问作者kaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:25:01