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

当给定方法名称为字符串时,如何调用Java方法?

赏逸春
2023-03-14
问题内容

如果我有两个变量:

Object obj;
String methodName = "getName";

在不知道的类的情况下obj,如何调用由其标识的方法methodName?

调用的方法没有参数,并且有String返回值。


问题答案:
java.lang.reflect.Method method;
try {
  method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..);
} catch (SecurityException e) { ... }
  catch (NoSuchMethodException e) { ... }

参数标识你需要的非常特定的方法(如果有多个重载可用,如果该方法没有参数,则仅给出methodName)。

然后,你通过调用该方法

try {
  method.invoke(obj, arg1, arg2,...);
} catch (IllegalArgumentException e) { ... }
  catch (IllegalAccessException e) { ... }
  catch (InvocationTargetException e) { ... }

同样,.invoke如果没有,请忽略中的参数。



 类似资料:
  • 类的每个实例都有一个类的实例。应该根据其成员变量调用中的不同方法。这是一个实现,做我想要的: 但是,我希望能够以某种方式直接传递B的方法1或方法2,而不是执行myA.method_num=1。我怎么能那样做?

  • 问题内容: 如何通过反射找出方法的字符串名称是什么? 例如给出: 我想获取字符串“ getFoo”,如下所示: 问题答案: 由于方法本身不是对象,因此它们没有直接的属性(就像您希望使用JavaScript之类的一流函数那样)。 您能做的最接近的是致电 是一个对象,您可以使用它调用任何反射方法。 但是,据我所知,一种方法无法识别自己。

  • 问题内容: 我有一个元组,列出了像这样的类的方法: 等等.. 现在,我需要根据用户做出的选择动态调用这些方法。该方法将基于索引被调用。因此,如果用户选择“ 0”,则称为,如果“ 5”,则称为。 我这样做的方法如下: 我设法解决了一些问题,但是会产生错误并且一点也不优雅。 问题答案: 如果要在对象(包括导入的模块)上调用方法,则可以使用: 例如: 如果您需要在当前模块中调用函数 要发送的参数列表或元

  • 问题内容: 我正在编写一个以命令作为参数的Python应用程序,例如: 我希望应用程序是可扩展的,也就是说,能够添加实现新命令的新模块而不必更改主应用程序源。这棵树看起来像: 因此,我希望应用程序在运行时找到可用的命令模块并执行相应的命令模块。 Python定义了函数,该函数使用一个字符串作为模块名称: 该函数导入模块名称,可能使用给定的全局变量和局部变量来确定如何在包上下文中解释该名称。from

  • 本文向大家介绍用Java显示当前方法名称,包括了用Java显示当前方法名称的使用技巧和注意事项,需要的朋友参考一下 包含由当前堆栈跟踪元素表示的执行点的当前方法名称由java.lang.StackTraceElement.getMethodName()方法提供。 演示此的程序如下所示- 示例 输出结果 现在让我们了解上面的程序。 该方法用于获取当前方法名称,该名称包含由当前堆栈跟踪元素表示的执行点

  • 问题内容: 在过去的几周里,我见过有些人在方法或类上使用非常长的名称(50个字符),这通常是在提高可读性的前提下进行的,我认为这样的长名称可以表明我们如果需要这么长的名称,尝试在方法类中做很多或太多的事情,但是我想知道你们对此有何看法。 一个例子是: 问题答案: 如果存在较短的名称(可以平等地传达方法的行为),则Java或任何其他语言的名称都太长。