如何使用包含名为 "System" 的 class 的 jsonschema2pojo 生成 classes?
How to generate classes using jsonschema2pojo that include a class called "System"?
我正在尝试使用 jsonschema2pojo 从第三方 JSON 模式生成 Java classes,所以我需要使用 [=36] 的名称=]是的。 classes 之一称为 System
。结果,对于除 class 之外的所有 classes,toString()
方法中存在错误:
package com.example;
// within a class
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(Status.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
...
}
问题出在对 System.identityHashCode()
的调用中,因为系统 class 被解析为同一包中的 class,而不是 java.lang.System
class。生成的 System
class 中的调用如下所示:
sb.append(System.class.getName()).append('@').append(Integer.toHexString(java.lang.System.identityHashCode(this))).append('[');
JSON 可以是任何 JSON,即甚至 { "type": "object" }
2 classes,一个叫 System
,另一个叫 Foo
将导致错误。我正在使用 Java API 生成代码,如下所示:
String packageName = "com.example";
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public boolean isGenerateBuilders() { // set config option by overriding method
return true;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, #NAME_OF_CLASS#, packageName, SOME_URL);
codeModel.build(outputDir);
如何生成代码,使完全限定的 java.lang.System
class 用于所有 classes?
实际上,这是 Intellij 的问题。生成的 classes 是正确的,我只是将它们从生成的目录复制到源目录,Intellij 认为这会有所帮助并将 class 简化为副本的一部分。结果,这实际上破坏了生成的 classes.
我正在尝试使用 jsonschema2pojo 从第三方 JSON 模式生成 Java classes,所以我需要使用 [=36] 的名称=]是的。 classes 之一称为 System
。结果,对于除 class 之外的所有 classes,toString()
方法中存在错误:
package com.example;
// within a class
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(Status.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
...
}
问题出在对 System.identityHashCode()
的调用中,因为系统 class 被解析为同一包中的 class,而不是 java.lang.System
class。生成的 System
class 中的调用如下所示:
sb.append(System.class.getName()).append('@').append(Integer.toHexString(java.lang.System.identityHashCode(this))).append('[');
JSON 可以是任何 JSON,即甚至 { "type": "object" }
2 classes,一个叫 System
,另一个叫 Foo
将导致错误。我正在使用 Java API 生成代码,如下所示:
String packageName = "com.example";
JCodeModel codeModel = new JCodeModel();
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public boolean isGenerateBuilders() { // set config option by overriding method
return true;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, #NAME_OF_CLASS#, packageName, SOME_URL);
codeModel.build(outputDir);
如何生成代码,使完全限定的 java.lang.System
class 用于所有 classes?
实际上,这是 Intellij 的问题。生成的 classes 是正确的,我只是将它们从生成的目录复制到源目录,Intellij 认为这会有所帮助并将 class 简化为副本的一部分。结果,这实际上破坏了生成的 classes.