我有一组类似的类,它们都实现了表单
的功能public static ClassA convertToClassA(Obj A)
public static ClassB convertToClassB(Obj B)
我想遍历一个类列表并调用此函数,该函数在每个类中使用一个Obj
参数。如果每个函数的命名方式不同,我该怎么做?
感谢您的帮助。
答案 0 :(得分:3)
Class cls = Class.forName("ClassA");
String methodName = "convertTo" + cls.getSimpleName();
Method method = cls.getDeclaredMethod(methodName, new Class[]{Obj.class});
// If the underlying method is static, then the first parameter is ignored. It may be null as illustrated below.
method.invoke(null, your_object);
答案 1 :(得分:1)
使用您的方法签名创建公共接口并让您的可调用类实现它,稍后您可以通过接口实例迭代对象并从中调用方法,因此没有问题。 HOWEVER 我开始认为你想调用方法而不知道它的名字是AT ALL - 目标方法的唯一知识就是参数的数量和类型。确实,通过反射确实是不可能的,但如果存在类似的方法签名,它将是无效的。无论如何,不知道你想做什么,但是你的项目设计很糟糕(没有接口,我猜的吸气性差等)。
答案 2 :(得分:0)
看一下反射包。它提供了获取实例提供的所有方法的方法。
apache common的BeanUtil(http://commons.apache.org/beanutils)也提供了一些类似的方法。