我有一个类Method的对象.我调用m.getParameterTypes()
了创建方法参数的数组参数.
我还有一个对象阵列arr.我想检查arr中的对象是否与params中的类型相同(并且顺序相同).
我所做的是创建一个数组类,其中包括arr中每个对象的类.然后我尝试将类与params进行比较.事实证明它们永远不会相等,因为classes数组中的类格式为java.lang.String
,而param数组中的参数格式为String
.我如何比较阵列?如何更改其中一个的格式?
getParameterTypes()
返回一个Class<?>[]
而实际的参数本身就是对象(所以你会有一个Object[]
).要检查参数是否有效,您可以使用:
if (parameterTypes.length != arr.length) {
// Invalid: wrong number of arguments
}
for (int i=0; i < parameterTypes.length; i++) {
if (arr[i] == null && parameterTypes[i].isPrimitive()) {
// Invalid: can't pass null for a primitive parameter
} else if (arr[i] != null && !parameterTypes[i].isInstance(arr[i])) {
// Invalid: invalid argument type
} else {
// Valid
}
}
Run Code Online (Sandbox Code Playgroud)
(当然,做任何你需要做的有效/无效案件.)
归档时间: |
|
查看次数: |
5821 次 |
最近记录: |