如果我有两个变量:

Object obj;
String methodName = "getName";

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

被调用的方法没有参数,返回值为String.是a getter for a Java bean.

推荐答案

从臀部开始编码,应该是这样的:

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中的参数.不过,是的.阅读关于Java Reflection

Java相关问答推荐

在Spring Boot中测试时出现SQL语法错误

在Java 8之后,HashMap的最坏情况下时间复杂度仍然是O(n)而不是O(log n)?

无法找到符号错误—Java—封装

转换为Biggram

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

在for—each循环中的AnimationTimer中的if语句'

如何让JFileChooser(DIRECTORIES_ONLY)从FolderName中的空白开始?

使用意向过滤器从另一个应用程序启动服务

GSON期间的Java类型擦除

在Spring Boot中使用哪个Java类来存储创建时间戳?

如何在Microronaut中将 map 读取为 map

Domino Designer 14中的保存代理添加了重影库

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

视图被推出线性布局-Android

Java中的发布/订阅-Long Live和Short Live Publisher,哪种方法是正确的?

Java类型推断:为什么要编译它?

在具有Quarkus Panache的PostgreSQL中将JSON数据存储为JSONB时,会将其存储为转义字符串

为什么使用lo索引来解决二进制搜索问题不同于使用hi索引?

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了