Java可以取消引用语句吗?

Java可以取消引用语句吗?,java,Java,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()(例如,在各种脚本语言中)、反射、内省、Ja

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的编程语言中,这种类型的功能/概念是吗?

Java没有将这种行为作为标准语言功能提供,但是可以通过以下方式实现:


是的,这是可能的反映,但是性能很差(在中确认)

关于反思的说明:


本文介绍如何使用反射。对您来说,“按名称调用方法”一节是最有趣的,但我建议您阅读整篇文章。

据我所知,您不能。你为什么需要它?@c-an-嗯,我正试图在属性文件中放入一个方法名,例如“methodName=multiply”,然后在程序中调用它,而不必硬编码,也不必使用
开关
,如果。。。否则,如果是
或工厂设计模式。我想在这种情况下,您需要使用params并实现您想要实现的目标。这感觉就像是一个“尽管性能很差”的引用??来自我的个人经验。通过快速搜索,我得到了以下确认:。当然,甲骨文不会告诉你他们产品的不好的方面。我不会说任何人,包括甲骨文,试图故意隐瞒这一事实。由于它是如何实现的,所以它没有那么快。现在这更像是一种技术限制。新版本也在努力改变这一点。这与调用函数并根据条件告诉如何操作是一样的。尽管如此,请注意,使用反射的需要通常表明设计/架构不好。因此,如果可能,首先考虑重构代码。
MyMath myMath = new MyMath();
String methodName = "multiply";
Method m = MyMath.class.getMethod(methodName);
m.invoke(myMath, 2, 3);