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

例如,我有

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 {
}

最佳答案

这里有几个问题:


package是保留字,请使用其他程序包名称(对于此响应,我将使用example)。
使用JCodeModel时,应使用规范名称“ example.Foo.Bar”引用该类


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

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

10-07 22:45