java - 使用代码模型扩展内部类

标签 java sun-codemodel jcodemodel

如何从内部静态类扩展生成的类?

例如,我有

class Foo {
    static class Bar {
    }
}

我希望我生成的类能够从 Bar 扩展

JCodeModel codeModel = new JCodeModel()
JClass aClass = codeModel.ref("somePckg.Foo$Bar")
JPackage jp = codeModel._package("pckag")
JDefinedClass jc = jp._class("GeneratedClass")
jc._extends(aClass)
codeModel.build(new File("generated/"))

我得到的是

import somePckg.Foo$Bar;
public class GeneratedClass extends Foo$Bar {}

但我想要的是

import somePckg.Foo;
public class GeneratedClass extends Foo.Bar {}

解决方案:

您应该像这样传递类名:

codeModel.ref("android.support.v7.widget.RecyclerView.ViewHolder")

CodeModel 将生成

package pckg;

import somePckg.Foo.Bar;

public class GeneratedClass extends Bar {
}

最佳答案

这里有几个问题:

  1. package 是保留字,请使用不同的包名称(对于此响应,我将使用 example)。
  2. 对于 JCodeModel,您应该使用规范名称“example.Foo.Bar”引用该类

此外,如果将其公开,则可以直接引用该类:

JClass aClass = codeModel.ref(Bar.class);

关于java - 使用代码模型扩展内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212898/

相关文章:

java - 使用 Apache poi 生成 .docx 时如何为页脚添加间距?

Java 对象图验证

java - 在 CodeModel 的 switch 中使用 Enum 常量

java - 为什么Java中的ServerSocket与netstat -ant不一致?

java - 如何获取 Live Connect(Hotmail) 日历对象 ID。?

java - 添加现有代码模型的方法

java - 如何使用codemodel使用父类的任何字段

java - JCodemodel 中的异常消息

java - 使用 JCodeModel 生成 java 字节码

java - 在方法中重用时如何获取类的泛型类型 "T"