我有一个xml架构(使用trang自动生成),它不断变化.这些变化不是很精细.仅从此架构中添加或删除一些元素.从这个模式,我生成java类(使用cxf),我将通过它解组xml文档.
随着架构的变化,我自动生成的java类也会发生变化.同样,与模式一样,java类中的更改也不是很大.例如,如果将一个元素say elemA
添加到模式中; 一些相关的函数说getElemA()
并setElemA()
添加到自动生成的java类中.
现在,我如何确保这些自动生成的类中存在特定的函数?一种解决方案是手写模式,以便覆盖xml的所有可能元素.这就是我最终要做的.但就目前而言,我还没有修复xml文件的格式.
更新:
有getElemA()
可能在自动生成的类中定义方法.我无法控制这些类的自动生成.但在我的主要课程中,如果有以下代码,
If method getElemA exists then
ElemA elemA = getElemA()
Run Code Online (Sandbox Code Playgroud)
这段代码将永远存在于我的主类中.如果getElemA()
在其中一个自动生成的类中生成方法,则没有问题.但是如果没有生成这个方法,那么编译器会抱怨这个方法在任何类中都不存在.
有没有什么办法可以让编译器在编译时不要抱怨这个函数?
我正在从Java 7迁移到Java 8,我已经遇到了这种语言的变化.
我有一个带有注释方法的Superinterface:
public interface SuperInterface {
@X
SuperInterface getSomething();
}
Run Code Online (Sandbox Code Playgroud)
我有一个SubInterface与相同的注释方法,但返回一个子接口:
public interface SubInterface extends SuperInterface {
@X
SubInterface getSomething();
}
Run Code Online (Sandbox Code Playgroud)
当我运行此测试时,它在Java 8中失败但在Java 7中失败:
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
final Method[] methods = SubInterface.class.getMethods();
for (Method method : methods) {
if (method.getAnnotations().length == 0) {
throw new RuntimeException("No annotations found for " + method);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
接口方法的注释在Java 7中继承,但在Java 8中没有,是真的吗?
@X定义为:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD) …
Run Code Online (Sandbox Code Playgroud)