1

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编译器抛出错误。正如您在 import 语句中看到的那样,该类Status是一个存在于该类中的内部枚举。Attachment

您知道我可以使用代码模型实现导入静态的任何方法吗?

或者如何让成员使用类限定名?

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

1 回答 1

2

我不确定 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;
}
于 2014-06-18T03:56:55.697 回答