如何映射具有接口和类的方法 - 从操作到委托

时间:2012-03-30 06:57:19

标签: java

考虑委托中的方法

Public void findThisMethod(String a,Set b,HashSet c){}

所以从action am gng到使用方法id和参数类型映射此方法。使用。

Object[] arguments = new Object[] {a,b,c}
    for (int i = 0 ; i < arguments.length ; i++){
      argumentTypes[i]  = arguments[i].getClass();
    }
Method invokeMethod = delegateClass.getDeclaredMethod(methodID,argumentTypes);
returnObj           = invokeMethod.invoke(delegateObj,arguments);

...问题::这不是wotking因为Set是一个界面!任何人都可以告诉我如何正确映射界面????

3 个答案:

答案 0 :(得分:1)

通常,在尝试为方法调用选择最佳重载方法时,需要像编译器一样花费相同的工作量。

在您的情况下,如果给定参数a, b, c存在方法,则必须进行测试。如果没有,那么你必须查看超类型和接口。

您可以这样做:反过来:获取可用方法的集合,并为参数向量创建候选方法的优先级列表。

答案 1 :(得分:1)

如果您正在使用getDeclaredMethod查找方法的签名,那么您应该提供此签名的pameters的确切类型,而不是子类。子类化将由编译器解决,但它对内省没有帮助。

明确提供参数的类型,不要像对象那样从对象中获取它们。你应该有像

这样的东西
delegateClass.getDeclaredMethod(methodID, new Class[] { String.class, Set.class, HashSet.class } );

答案 2 :(得分:1)

如何查找兼容方法的示例:

primer 1

primer2