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

在主类中调用Java接口默认方法遇错误,寻求解决方法

解决Java接口默认方法调用问题

你遇到的问题核心很明确:默认方法是实例级别的方法,不能像静态方法那样直接通过接口名调用。静态方法stat()属于接口本身,所以Pozdrav.stat()的调用是正常的,但默认方法osn()必须依托接口的实例才能执行。

下面给你两种简单可行的调用方式:

方式1:通过实现类的实例调用

你的KonkretniPozdrav类已经实现了Pozdrav接口,会自动继承接口的默认方法,直接创建该类的实例就能调用:

public class KonkretniPozdrav implements Pozdrav{
    public static void main(String[] args) {
        Pozdrav.stat(); // 静态方法调用正常
        
        // 创建实现类实例,调用默认方法
        KonkretniPozdrav myPozdrav = new KonkretniPozdrav();
        myPozdrav.osn();
    }
}

方式2:通过接口的匿名实现类实例调用

如果不想单独创建实现类的实例,也可以直接生成接口的匿名实现对象来调用默认方法:

public class KonkretniPozdrav implements Pozdrav{
    public static void main(String[] args) {
        Pozdrav.stat();
        
        // 创建匿名接口实例,调用默认方法
        Pozdrav anonymousPozdrav = new Pozdrav() {};
        anonymousPozdrav.osn();
    }
}

额外说明

默认方法的设计目的是给接口新增实例方法时,不破坏已有实现类的兼容性。它和静态方法的核心区别在于:

  • 静态方法属于接口类本身,无需实例即可执行
  • 默认方法属于接口的实例,必须通过对象实例才能访问

内容的提问来源于stack exchange,提问作者Milan Maxa Maksimović

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:24:37