java - Codemodel不生成静态导入

标签 java sun-codemodel

JCodeModel 生成一个 import 语句来代替 import static。例如,我有一个类,它具有 import nz.co.cloudm.cloudserv.api.pojos.core.file.attachment.Attachment.Status 而不是 import static nz.co.cloudm。 cloudserv.api.pojos.core.file.attachment.Attachment.Status 因此编译器会抛出错误。 Status 类是一个内部枚举,位于 Attachment 类中,正如您在 import 语句中看到的那样。

你知道我可以使用代码模型实现导入静态吗?

否则如何让成员使用类限定名?

private nz.co.cloudm.cloudserv.api.pojos.core.file.attachment.Attachment.Status status;

最佳答案

我不确定 codemodel 是否能够定义静态导入,因为它是一个较旧的库。您可以通过 ref() 方法使用枚举,因为静态导入实际上只是为程序员提供了便利:

public class Tester {

    public enum Status{
        ONE, TWO;
    }

    public static void main(String[] args) throws JClassAlreadyExistsException, IOException {
        JCodeModel codeModel = new JCodeModel();

        JClass ref = codeModel.ref(Status.class);

        JDefinedClass outputClass = codeModel._class("Output");

        outputClass.field(JMod.PRIVATE, ref, "status", ref.staticRef(Status.ONE.name()));

        codeModel.build(new StdOutCodeWriter());
    }
}

输出:

public class Output {
    private test.Tester.Status status = test.Tester.Status.ONE;
}

关于java - Codemodel不生成静态导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276371/

相关文章:

java - 将 Java 数据包发送到 Python 服务器?

java - 在 XJC 插件的 CodeModel 中找不到异常类

Java源代码生成: Eclipse JDT AST vs CodeModel

java - JCodemodel 中的异常消息

java - arg 参数中的代码模型/引号 (")

java - 如何从外部目录java调用client_secrets.json?

Java Swing 文本字段和按钮的边框

java - 如何使用 Java codeModel 为数组的特定索引赋值

java - 在 O(n log n) 时间内生成长度为 n 且反转次数为 k 的数组的算法?

Java - 如何使用凭据设置 socks 代理