小编lea*_*qui的帖子

如何检查java类中是否有特定的方法?

我有一个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 xsd jaxb

24
推荐指数
3
解决办法
4万
查看次数

接口方法的注释在Java 7中继承,但在Java 8中没有

我正在从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)

java eclipse eclipse-jdt java-7 java-8

18
推荐指数
2
解决办法
1010
查看次数

标签 统计

java ×2

eclipse ×1

eclipse-jdt ×1

java-7 ×1

java-8 ×1

jaxb ×1

xsd ×1