所以,我有一个奇怪的问题。这个表达式:method.invoke(target, null)
throws java.lang.IllegalArgumentException: wrong number of arguments
问题是这个表达式在 hibernate 的深处(准确地说是 BasicPropertyAccessor$BasicGetter),我想它应该可以正常工作(直到最近才这样做)
我在 Eclipse 中调试了这个问题,实际上,如果我(在显示视图中)调用method.invoke(target)
或method.invoke(target, (Object[]) null)
一切正常。我确定我的班级有这个吸气剂,它没有参数。所以……问题是,到底发生了什么?!
编辑:
- method 是 java.lang.reflect.Method 的一个实例,并指向上述 getter
- target 是具有公共 X getX() getter 的类的实例
- JDK 1.6.0_31
休眠代码(BasicPropertyAccessor:143):
public Object get(Object target) throws HibernateException { try { return method.invoke(target, null); } catch{ ... } }