Java可以做这样的事情吗?
String methodName = "multiply";
MyMath myMath = new MyMath();
/* "methodName" is expanded before being called */
int answer = myMath.methodName(2, 3);
System.out.println(answer);
6这种类型的特性/概念在编程语言中是否称为“动态扩展”、“变量插值”、eval() (例如,在各种脚本语言中)、反射、自省、Java bean?
发布于 2020-02-08 19:39:34
Java没有将此行为作为标准语言特性提供,但是可以使用the Reflection API来实现
MyMath myMath = new MyMath();
String methodName = "multiply";
Method m = MyMath.class.getMethod(methodName);
m.invoke(myMath, 2, 3);发布于 2020-02-08 19:39:53
是的,这是可能的反射,但是性能很差(在Java Reflection Performance中得到确认)。
关于反射的说明:https://www.oracle.com/technical-resources/articles/java/javareflection.html
本文将介绍如何使用反射。对于您来说,“按名称调用方法”一节是最有趣的,但我建议您阅读整篇文章。
https://stackoverflow.com/questions/60126379
复制相似问题