简体   繁体   English

Sun CodeModel使用带有JInvocation.arg的类

[英]Sun CodeModel using Class with JInvocation.arg

I'm using sun's code model (2.4.1) classes to generate code. 我正在使用sun的代码模型(2.4.1)类来生成代码。 How do I pass a Class to JInvocation.arg? 如何将类传递给JInvocation.arg? The code I am trying to generate is: 我试图生成的代码是:

JAXBContext jc;
jc = JAXBContext.newInstance(NaturalLanguageUsage.class);

The code I am running is: 我正在运行的代码是:

JClass importJAXBContext = codeModel.directClass(javax.xml.bind.JAXBContext.class.toString());
JType typeJAXBContext = codeModel._ref(javax.xml.bind.JAXBContext.class);
JVar varJc = block.decl(typeJAXBContext, "jc");

JInvocation invokeJAXBContext = block.staticInvoke(importJAXBContext, "newInstance");
invokeJAXBContext.arg(??); // how do I pass NaturalLanguageUsage.class

What I would like to produce: 我想生产什么:

JAXBContext jc;
jc = JAXBContext.newInstance(NaturalLanguageUsage.class);

or even better: 甚至更好:

JAXBContext jc = JAXBContext.newInstance(NaturalLanguageUsage.class);
    JClass importJAXBContext = codeModel.ref(javax.xml.bind.JAXBContext.class);
    JVar varJc = block.decl(importJAXBContext, "jc");

    JClass naturalLangClassRef = codeModel.ref(NaturalLanguageUsage.class);

    JInvocation invokeJAXBContext = importJAXBContext.staticInvoke("newInstance");
    invokeJAXBContext.arg(naturalLangClassRef.dotclass());

    block.assign(varJc, invokeJAXBContext);

To produce declaration and assignment in one line: 要在一行中产生声明和赋值:

    JVar varJc = block.decl(importJAXBContext, "jc", invokeJAXBContext);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM