Cannot create abstract class in codemodel?

111 Views Asked by At

My code:

JCodeModel cm = new JCodeModel();
cm._class(JMod.ABSTRACT, "TestClass", ClassType.CLASS);
cm.build(new File("."));

no matter what I write to mods or ClassType parameter, the outcome is always a public class.

How can I create an abstract class?

1

There are 1 best solutions below

0
John Ericksen On BEST ANSWER

Strange. It seems JCodeModel doesn't create abstract classes without a package. The following cases have a package declaration:

JCodeModel cm = new JCodeModel();
cm._class(JMod.PUBLIC | JMod.ABSTRACT, "test.TestClass", ClassType.CLASS);
cm.build(new File("."));

Generates:

package test;

public abstract class TestClass {

}

or

JCodeModel cm = new JCodeModel();
JPackage pkg = cm._package("");
pkg._class(JMod.ABSTRACT, "TestClass2", ClassType.CLASS);
cm.build(new File("."));

Generates:

public abstract class TestClass2 {

}