Java中无名称调用函数

Java中无名称调用函数,java,function,Java,Function,我有一组类似的类,它们都实现了 public static ClassA convertToClassA(Obj A) public static ClassB convertToClassB(Obj B) 我想循环遍历一个类列表并调用这个函数,该函数在每个类中取一个参数Obj。如果每个函数的名称不同,我该如何做 谢谢你的帮助。看看反射包。它提供方法来获取实例提供的所有方法 apachecommon的BeanUtil()也提供了一些util方法来做类似的事情。看看反射包。它提供方法来获取实例

我有一组类似的类,它们都实现了

public static ClassA convertToClassA(Obj A)

public static ClassB convertToClassB(Obj B)
我想循环遍历一个类列表并调用这个函数,该函数在每个类中取一个参数
Obj
。如果每个函数的名称不同,我该如何做


谢谢你的帮助。

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


apachecommon的BeanUtil()也提供了一些util方法来做类似的事情。

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


apache common的BeanUtil()也提供了一些执行类似操作的util方法。

使用方法签名创建公共接口,并让可调用的类实现它,稍后您可以在对象上作为接口实例进行迭代,并从中调用方法,这样就没有问题了。
然而我开始认为您想在根本不知道方法名称的情况下调用方法-唯一知道目标方法的是参数的数量和类型。通过反射这确实是不可能的,但是,如果存在类似的方法签名,这将是不准确的。不管怎么说,我不知道你想做什么,但是你的项目从一开始就设计得很糟糕(没有接口,我想是内在性差等等)

用你的方法签名创建公共接口,让你的可调用类实现它,稍后,您可以将对象作为接口的实例进行迭代,并从中调用方法,这样就没有问题了。
然而我开始认为您想在根本不知道方法名称的情况下调用方法-唯一知道目标方法的是参数的数量和类型。通过反射这确实是不可能的,但是,如果存在类似的方法签名,这将是不准确的。不管怎么说,我不知道你想做什么,但是你的项目从一开始就设计得很糟糕(没有接口,我想是不好的内在性等等)

你能用代码解释一下吗?现在有点可疑了。请阅读更多关于Java反射的内容,这难道不是接口的好处吗?您能详细说明一下吗?有20多个这样的类,我不打算全部更改。@user592748。如果您有20多个类,您如何知道调用哪个方法?你怎么知道一个具体的实例可以转换成什么?你能用代码解释一下吗?现在有点可疑了。请阅读更多关于Java反射的内容,这难道不是接口的好处吗?您能详细说明一下吗?有20多个这样的类,我不打算全部更改。@user592748。如果您有20多个类,您如何知道调用哪个方法?你怎么知道一个特定的实例可以转换成什么?如果这些是静态方法,接口就帮不了什么忙。如果这些是静态方法,接口就帮不了什么忙。
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);