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

如何在Xtend活动注解生成的代码中实现方法静态导入?

在Xtend活动注解中实现静态导入方法的解决方案

我明白你的需求——你想让活动注解生成的代码里用上静态导入的方法,而不是每次都写完整的类名调用。当前你的代码能自动导入Collections类,但没法生成静态导入特定方法的语句,这确实需要手动调整API调用。

要实现这个需求,你需要做两个关键调整:

  • 主动添加静态导入声明
  • 在方法体中直接使用方法名而非带类名的调用

修改后的编译参与者代码

override doTransform(MutableClassDeclaration clazz, extension TransformationContext context) {
    // 添加静态导入emptyList方法
    clazz.addStaticImport("java.util.Collections.emptyList")
    
    // 在方法体中直接使用emptyList()
    clazz.addMethod("foo", [
        body = '''
            emptyList();
        '''
    ])
}

代码说明

  1. addStaticImport方法:这个API会帮你生成import static java.util.Collections.emptyList;的静态导入语句,参数是你要导入的方法的全限定名。如果想要静态导入整个类的所有方法,可以写成clazz.addStaticImport("java.util.Collections.*"),不过更推荐只导入需要的方法,避免潜在的命名冲突。
  2. 方法体中的调用:去掉类名前缀,直接写emptyList(),这样生成的代码就会使用静态导入的方法了。

这样修改后,你最终生成的代码就会和你期望的完全一致:

import static java.util.Collections.emptyList;

@MyActiveAnnotation
public class MyTest {
    public void foo() {
        emptyList();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:51:29