Я пытаюсь сгенерировать Java-классы из сторонней JSON-схемы, используя jsonschema2pojo , поэтому мне нужно использовать имена классов.Один из классов называется System
.В результате для всех классов, кроме этого класса, в методе 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()
, поскольку класс System разрешен вбыть классом в одном пакете, а не классом java.lang.System
.Вызов в генерируемом классе System
выглядит следующим образом:
sb.append(System.class.getName()).append('@').append(Integer.toHexString(java.lang.System.identityHashCode(this))).append('[');
JSON может быть любым JSON вообще, то есть даже { "type": "object" }
для 2 классов, один называется 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
использовался для всех классов?