当前位置: 首页 > 面试题库 >

如何检查Java类中是否包含特定方法?

干高歌
2023-03-14
问题内容

我有一个不断变化的xml模式(使用trang自动生成)。这些更改不是很详尽。从此架构中仅添加或删除一些元素。通过这种模式,我正在生成Java类(使用cxf),通过它们我将解组xml文档。

随着模式的更改,我的自动生成的Java类也会更改。同样,与模式一样,java类中的更改不是很大。例如,如果将元素say
elemA添加到架构;一些相关的功能说了getElemA()setElemA()并添加到自动生成的java类中。

现在,如何确定这些自动生成的类中是否存在特定功能?一种解决方案是手写模式,以便覆盖xml的所有可能元素。这就是我最终要做的。但是目前,我还没有修复xml文件的格式。

更新:

getElemA()可能在自动生成的类中定义方法。我无法控制这些类的自动生成。但是在我的主类中,如果有以下代码,

If method getElemA exists then 
     ElemA elemA = getElemA()

该代码将始终存在于我的主类中。如果方法getElemA()是在自动生成的类之一中生成的,则没有问题。但是,如果未生成此方法,则编译器会抱怨该方法在任何类中都不存在。

有什么方法可以使编译器在编译时不抱怨此功能?


问题答案:

@missingfaktor提到了一种方法,下面是另一种方法(如果您知道api的名称和参数)。

假设您有一种不带参数的方法:

Method methodToFind = null;
try {
  methodToFind = YouClassName.class.getMethod("myMethodToFind", (Class<?>[]) null);
} catch (NoSuchMethodException | SecurityException e) {
  // Your exception handling goes here
}

调用它(如果存在):

if(methodToFind == null) {
   // Method not found.
} else {
   // Method found. You can invoke the method like
   methodToFind.invoke(<object_on_which_to_call_the_method>, (Object[]) null);
}

假设您有一种采用本地int参数的方法:

Method methodToFind = null;
methodToFind = YouClassName.class.getMethod("myMethodToFind", new Class[] { int.class });

调用它(如果存在):

if(methodToFind == null) {
   // Method not found.
} else {
   // Method found. You can invoke the method like
   methodToFind.invoke(<object_on_which_to_call_the_method>, invoke(this,
      Integer.valueOf(10)));
}

假设您有一种采用盒装Integer参数的方法:

Method methodToFind = null;
methodToFind = YouClassName.class.getMethod("myMethodToFind", new Class[] { Integer.class });

调用它(如果存在):

if(methodToFind == null) {
   // Method not found.
} else {
   // Method found. You can invoke the method like
   methodToFind.invoke(<object_on_which_to_call_the_method>, invoke(this,
      Integer.valueOf(10)));
}

使用上述soln调用方法不会给您带来编译错误。按照@Foumpie更新



 类似资料:
  • 问题内容: 如何检查seleniumWeb元素是否包含特定的CSS类。 我有这个html li元素 如您所见,在class属性内部有一个活动类。 我的问题是我有这个元素,我想根据class属性是否具有其他“ active”值进行检查,这是比使用xpath更优雅的解决方案。 我怎样才能做到这一点? 问题答案: 鉴于您已经找到了您的元素,并且您想检查class属性内的某个类: 正如@aurelius正

  • 我想知道,我“正在寻找在我的片段中添加更新按钮,当用户单击时会检查更新是否可用。 我“正在寻找如何从url访问json文件并检查json值是否包含新值的解决方案。如果键与已经指定的值匹配,则显示消息您的数据已更新,如果不匹配,则显示无可用更新。 例如,如果下面是json文件 如果它包含除1之外的其他内容,则显示带有可用更新的toast消息。

  • 问题内容: 我有一个Java课。如何检查该类是否包含JUnit4测试的方法?我是否必须使用反射对所有方法进行迭代,还是JUnit4提供这种检查? 编辑: 由于注释不能包含代码,因此我根据以下答案放置了代码: 问题答案: 使用内置的JUnit 4类 org.junit.runners.model.FrameworkMethod 来检查方法。

  • 问题内容: 我有一个Array类型的PHP变量,我想找出它是否包含特定值,并让用户知道它在那里。这是我的数组: 我想做些类似的事情: 最好的方法是什么? 问题答案: 使用功能。

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 考虑: 假设我有上面的代码,编写该语句的正确方法是什么? 问题答案: 您可以使用该函数来查找另一个字符串中另一个字符串的出现: 注意,of的使用是故意的(既不会也不返回期望的结果);返回大海捞针字符串中针线串起始处的偏移量,或者返回boolean值(如果找不到针)。由于0是有效的偏移量,而0是“假”,

  • 下面是我要做的:我有一些,如果列表包含特定字符串,我想打印一条语句,否则抛出一个异常,但当我尝试以下代码时 它遍历列表,在处,它显然找到“apple”,并立即转到块并抛出异常。我也试过下面的,但这也不起作用。 有没有一个简单的方法来做我想做的事情?