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

Java中能否实例化接口?Spring Retry中RetryCallback实例化疑问

原理说明

这是Java的匿名内部类语法特性,Java本身不支持直接实例化接口,你看到的写法本质是实例化了一个实现了RetryCallback接口的匿名子类对象。

具体逻辑

  • 当你使用new 接口名() { 实现代码 }的写法时,编译器会自动生成一个没有显式名称的子类,该子类会实现你指定的接口,同时完成抽象方法的重写,最终你创建的是这个匿名子类的实例,而非接口本身。
  • 你贴的示例代码中,RetryCallback是仅定义了doWithRetry一个抽象方法的接口,你在大括号里已经完成了该方法的重写逻辑,完全满足接口实现类的要求,所以可以正常运行。
  • Java 8及更高版本中,因为RetryCallback属于函数式接口(仅包含一个抽象方法),你还可以用Lambda表达式进一步简化写法,实现效果和匿名内部类完全一致:
retryTemplate.execute(arg0 -> {
    myService.templateRetryService();
    // 其他业务逻辑
    return null;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:07