使用生成的Java源代码,例如
所有生成的类都是“值对象”类型,没有业务逻辑。而且,如果我将方法添加到生成的源代码中,那么如果我重复源代码的生成,则将丢失这些方法。
这些Java代码生成工具是否提供“扩展”所生成代码的方法?
例如,
对于JAXB,请参阅添加行为。
基本上,您将JAXB配置为返回通常期望的对象的自定义实例。在下面的示例中,您将创建一个新的对象PersonEx,该对象扩展了JAXB对象Person。这种机制之所以有效,是因为您是从生成的类派生的,而不是完全不更改JAXB类或模式。
package org.acme.foo.impl; class PersonEx extends Person { @Override public void setName(String name) { if(name.length()<3) throw new IllegalArgumentException(); super.setName(name); } } @XmlRegistry class ObjectFactoryEx extends ObjectFactory { @Override Person createPerson() { return new PersonEx(); } }
请注意,@ Override指令在您的JAXB对象发生更改的情况下非常重要-它将防止您的自定义变得 孤立 。