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/