java - 使用变量作为对象名调用对象方法

标签 java object reflection methods

我有一个包含几个不同对象的类。

我可以使用 getDeclaredFields 获取所有对象的名称列表, 但我想在这些对象中调用一个方法。
我该怎么做?

ClassA a = new ClassA();
Class cls = c.getClass();
Field[] fields = cls.getDeclaredFields();
for(int i = 0; i< fields.length;i++) {
   System.out.println("Field = " + fields[i].toString());
   System.out.prontln(fields[i].method()) // how can I call the method from object fields[i]             
}

更多信息:我使用反射的原因是我想编写一个可用于测试所有其他类的对象是否正确存在的测试类。

testclass(class a),获取类a中的所有对象名称,并使用object.exists()方法验证该对象是否存在。

这是我的代码:我有一些对话框类,每个对话框类都有一些菜单项类、复选框类、文本字段类,我想写一个类来验证所有的复选框、文本字段是否存在(使用 checkbox.exist (), textfield.exist() ...) 在给定的对话框中。

ToolsMenu c = new ToolsMenu();
        Class cls = c.getClass();
        Field[] fields = cls.getDeclaredFields();
        for(int i = 0; i< fields.length;i++) {
            System.out.println("Field = " + fields[i].toString());
            println( fields[i].getDeclaringClass().exists()

我可以使用 getdeclaringclass 获取 field[i] 类,但是我如何调用在复选框、文本字段类中定义的方法 exists()。

最佳答案

你可以这样调用它:

...
Class clazz= fields[i].get(c).getClass();
clazz.getMethod("methodName").invoke(fields[i].get(c));
...

其中 "methodName" 是应该调用的方法的名称。您还可以将一些参数传递给该方法。

关于java - 使用变量作为对象名调用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305494/

相关文章:

java - JSON 解码去除小数尾随零

java - 如何从 C 程序运行 Java 程序?

java - 图像压缩或转换

java - 如何使用存储库模式更新 mongodb 中的嵌入文档

javascript - Object.defineProperty(obj, "prop", desc) 行为异常

android:如何在对象中保存图像

javascript - 与参数匹配时返回对象的键和值

reflection - 在 Common Lisp 中拦截和修改用户输入

java - 如何像处理 Bean 一样处理 POJO?

java - API反射困惑