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

Lombok实验性@Delegate注解的可替代实现方案咨询

可用的代理方法自动生成替代方案

1. 编译期静态生成方案(无运行时性能损耗,和Lombok @Delegate效果一致)

  • MapStruct @Delegate 注解
    MapStruct是工业级稳定的Java对象映射工具,其内置的@Delegate属于官方正式功能,用法和Lombok的实验性@Delegate高度对齐,不需要手写任何代理逻辑:
import org.mapstruct.Delegate;

public class A implements B{
    @Delegate
    private B b;
}

编译阶段会自动生成所有B接口的方法实现,直接转发调用到b实例,功能完全匹配原有实现。

  • IDE 内置代理生成功能
    如果不想引入额外第三方依赖,IDEA、Eclipse均原生支持一键生成代理方法:右键源代码→选择「Generate」→「Delegate Methods」,选中要代理的b成员和B接口的所有方法即可完成生成,缺点是后续B接口有变更时需要手动重新生成。
  • Jilt 轻量代码生成库
    专注于编译期代码生成的轻量库,支持通过注解自动生成代理类、装饰器类,可自定义代理逻辑的切入位置,灵活性高于Lombok原生@Delegate。

2. 运行时动态代理方案(不需要编译期生成代码,适合接口迭代频繁的场景)

  • JDK 原生动态代理
    无第三方依赖,仅支持接口代理,实现简单:
B proxyInstance = (B) Proxy.newProxyInstance(
    B.class.getClassLoader(),
    new Class[]{B.class},
    (proxy, method, args) -> method.invoke(targetB, args)
);
  • CGLIB 动态代理
    被Spring等主流框架广泛使用,支持代理普通类(不限于接口),稳定性有保障。

补充说明

Lombok的@Delegate虽然标记为实验性功能,但已经迭代超过10年,社区使用范围极广,官方至今没有明确的废弃时间表,如果现有项目已经大规模使用且没有遇到兼容性问题,继续使用的实际风险极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:06