[英]use variable as object name to call the object method
我有一个包含几个不同对象的类。
我可以使用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(类a),获取类a中的所有对象名称,并使用object.exists()方法验证该对象的存在。
这是我的代码:我有一些对话框类,每个对话框类都有一些menuitem类,checkbox类,textfield类,我想编写一个可用于验证所有checboxes,textfields是否存在的类(使用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]类,但是如何调用在复选框,textfields类中定义的方法exist()。
您可以使用类似这样的名称来调用它:
...
Class clazz= fields[i].get(c).getClass();
clazz.getMethod("methodName").invoke(fields[i].get(c));
...
其中"methodName"
是应调用的方法的名称。 您还可以将一些参数传递给该方法。
我不确定您为什么要使用反射。 你可以简单地做
a.field.method()
If field
及其method()
声明正确的访问修饰符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.