public static <T> T invokeWithCheck(Object obj, Method method, Object... args) throws UtilException {
		final Class<?>[] types = method.getParameterTypes();
		if (null != types && null != args) {
			Assert.isTrue(args.length == types.length, "Params length [{}] is not fit for param length [{}] of method !", args.length, types.length);
			Class<?> type;
			for (int i = 0; i < args.length; i++) {
				type = types[i];
				if (type.isPrimitive() && null == args[i]) {
					// 参数是原始类型，而传入参数为null时赋予默认值
					args[i] = ClassUtil.getDefaultValue(type);
				}
			}
		}

		return invoke(obj, method, args);
	}
public static < T > T invokeWithCheck ( Object obj , Method method , Object ... args ) throws UtilException { final Class < ? > [ ] types = method . getParameterTypes ( ) ; if ( null != types && null != args ) { Assert . isTrue ( args . length == types . length , "Params length [{}] is not fit for param length [{}] of method !" , args . length , types . length ) ; Class < ? > type ; for ( int i = 0 ; i < args . length ; i ++ ) { type = types [ i ] ; if ( type . isPrimitive ( ) && null == args [ i ] ) { args [ i ] = ClassUtil . getDefaultValue ( type ) ; } } } return invoke ( obj , method , args ) ; }
执行方法<br>
执行前要检查给定参数：

<pre>
1. 参数个数是否与方法参数个数一致
2. 如果某个参数为null但是方法这个位置的参数为原始类型，则赋予原始类型默认值
</pre>

@param <T> 返回对象类型
@param obj 对象，如果执行静态方法，此值为<code>null</code>
@param method 方法（对象方法或static方法都可）
@param args 参数对象
@return 结果
@throws UtilException 一些列异常的包装