【发布时间】:2012-10-26 12:45:45
【问题描述】:
我有泛型类类型,T如下:
class MyClass<T>
我也知道T是接口,里面只有一个方法但是不知道是什么接口,我写不出来:
class MyClass< T extends TheInterface >
那么有没有办法调用这个方法呢?
public void callMe(T me, Object...params){
// How can I invoke T interface method?
}
我一直在尝试这个:
public void callMe(T me, Object... params) {
// methods.length is 244, just as in my activity class
Method[] methods = me.getClass().getMethods();
try {
methods[0].invoke(me, params);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
} catch (InvocationTargetException e) {
e.printStackTrace();
return;
}
}
但它不起作用
编辑:我发布了新的question,解释了我为什么需要这个
【问题讨论】:
-
什么不起作用?请错误提示
-
无法提前知道你会得到什么接口(或超级接口)听起来很像设计中的问题。依靠反射来调用方法很少是一个好的策略。我个人的经验建议你应该找到一种方法来改进设计(也许使用Adapter pattern),而不是尝试在运行时调用一个你甚至不知道名称的方法。