How can I extend my generated class from an inner static class?
For instance, I have
class Foo {
static class Bar {
}
}
And I want my generated class to be extended from 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/"))
What I get is
import somePckg.Foo$Bar;
public class GeneratedClass extends Foo$Bar {}
But what I want is
import somePckg.Foo;
public class GeneratedClass extends Foo.Bar {}
Solution:
You should pass the class name like this:
codeModel.ref("android.support.v7.widget.RecyclerView.ViewHolder")
And CodeModel will generate
package pckg;
import somePckg.Foo.Bar;
public class GeneratedClass extends Bar {
}
A couple problems here:
package
is a reserved word, use a different package name (For this response I'll use example
).example.Foo.Bar
"Also, you could reference the class directly if you make it public:
JClass aClass = codeModel.ref(Bar.class);