0

我有一组类似的类,它们都实现了表单的功能

public static ClassA convertToClassA(Obj A)

public static ClassB convertToClassB(Obj B)

我想遍历一个类列表并调用这个函数,该函数Obj在每个类中都有一个参数。鉴于每个函数的名称不同,我该怎么做?

谢谢您的帮助。

4

3 回答 3

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);
于 2013-10-30T10:05:15.713 回答
1

使用您的方法签名创建通用接口并让您的可调用类实现它,稍后您可以迭代您的对象作为接口的实例并从中调用方法,所以没问题。 但是,我开始认为您想在根本不知道其名称的情况下调用方法-目标方法的唯一知识是参数的数量和类型。好吧,通过反射确实是不可能的,但是如果存在类似的方法签名,那将是不准确的。无论如何,不​​知道你想做什么,但你的项目从一开始就设计得很糟糕(没有接口,我猜想是糟糕的 inharitance 等等)

于 2013-10-30T09:11:32.887 回答
0

看看反射包。它提供方法来取回实例提供的所有方法。

apache common 的 BeanUtil ( http://commons.apache.org/beanutils ) 也提供了一些 util 方法做类似的事情。

于 2013-10-30T08:56:08.657 回答