首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向使用JCodeModel扩展的类中添加泛型类型参数?

如何向使用JCodeModel扩展的类中添加泛型类型参数?
EN

Stack Overflow用户
提问于 2016-03-15 21:33:21
回答 2查看 482关注 0票数 0

我正在使用JCodeModel,并试图生成一个类;多亏了此链接,我才能想出这样的方法:

代码语言:javascript
复制
public final class CodeModelTest
{
    private CodeModelTest()
    {
        throw new Error("no instantiation is permitted");
    }

    public static void main(final String... args)
        throws JClassAlreadyExistsException, IOException
    {
        final JCodeModel model = new JCodeModel();

        final JDefinedClass c = model._class("foo.bar.Baz");
        c._extends(BaseParser.class);

        final JMethod method = c.method(JMod.PUBLIC, Rule.class, "someRule");

        method.body()._return(JExpr._null());

        final CodeWriter cw = new OutputStreamCodeWriter(System.out,
            StandardCharsets.UTF_8.displayName());

        model.build(cw);
    }
}

所以,这很管用。在stdout上生成的代码是:

代码语言:javascript
复制
package foo.bar;

import com.github.fge.grappa.parsers.BaseParser;
import com.github.fge.grappa.rules.Rule;

public class Baz
    extends BaseParser
{
    public Rule someRule() {
        return null;
    }
}

到目前一切尚好。

现在问题是我想extends BaseParser<Object>而不是BaseParser..。我也想不出怎么做,尽管谷歌搜索了好几个小时.

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-15 21:39:43

您需要在构建器中调用窄带方法:

喜欢

代码语言:javascript
复制
 c._extends(BaseParser.class).narrow(yourClassHere);
票数 0
EN

Stack Overflow用户

发布于 2017-01-24 15:12:20

试试这个:

代码语言:javascript
复制
JClass type = model.ref(BaseParser.class).narrow(Object.class);
c._extends(type);

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36022609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档