我有一个关于反射的问题,我正在尝试使用某种eval()方法。所以我可以打电话给:
eval("test('woohoo')");
现在,我了解到java中没有eval方法,但存在反射。我做了以下代码:
String s = "test";
Class cl = Class.forName("Main");
Method method = cl.getMethod(s, String.class);
method.invoke(null, "woohoo");
这非常有效(当然,此代码周围有一个try,catch块)。它运行测试方法。但是,我想调用多个都有不同参数的方法。
我不知道这些是什么参数(不仅是String.class)。但这怎么可能呢?如何获得方法的参数类型?我知道以下方法:
Class[] parameterTypes = method.getParameterTypes();
但这将返回我刚刚选择的方法的parameterTypes!带有以下语句:
Method method = cl.getMethod(s, String.class);
任何帮助,将不胜感激 !
您将需要调用Class.getMethods()
并遍历它们以寻找正确的功能。
For (Method method : clazz.getMethods()) {
if (method.getName().equals("...")) {
...
}
}
这样做的原因是,可能有多个具有相同名称和不同参数类型的方法(即,方法名称已重载)。
getMethods()
返回类中的所有公共方法,包括那些超类中的方法。另一种方法是Class.getDeclaredMethods()
,它返回在类的所有方法
只 。
问题内容: 给定班级价值: 我正在尝试使用创建该类的新实例: 从主要: 这不起作用,Eclipse的输出: 如果是这样,怎么可以用我创建了一个新的价值目标,在那里我调用的? 谢谢 问题答案: 您需要为此找到确切的构造函数。只能用于调用null构造函数。所以写
本文向大家介绍JS使用eval()动态创建变量的方法,包括了JS使用eval()动态创建变量的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS使用eval()动态创建变量的方法。分享给大家供大家参考,具体如下: 一、什么是eval()函数? eval_r()函数可计算某个字符串,并执行其中的的 JavaScript 代码。 二、如何动态定义变量? 既然eval()能够计算字符串,何
问题内容: 我需要使用反射调用类的setter方法,并且代码如下: 的是一个以及设置器方法如下: 运行此代码时,将引发A ,但是将setter方法参数类型更改为from时,将执行正常。有没有一种方法可以将setter方法的参数保持为超级类型,并且在从类中获取方法时仍无需手动指定参数的类型即可使用反射? 问题答案: 与其他答案相反,有一个非常简单的解决方案。请参阅。它为您提供了一种执行任意反射代码的
我正在试验反射库发现:https://code.google.com/p/reflections/ 我试图实现的是扫描项目中的一个包,然后创建在该包中找到的给定类型的所有子类的实例。我使用库的方式是正确的,因为子类型返回以下内容: [class identifiers.DNSLookup,class identifiers.AliasChecker,class identifiers.Google
给定的类值: 我正在尝试使用创建该类的一个新实例: 如果是,我如何使用创建一个新的值对象,在这里我调用的? 谢谢