在java中使用反射时如何检查方法参数的类型

时间:2015-04-15 00:24:27

标签: java reflection

我有一个这样的方法:

public void get(Date date)

我得到它使用反射,我想检查参数的类型,确保它是否是java.util.Date的类型,我这样做:

Class<?> parametersType =  method.getParameterTypes();
// check it
if (parametersType[].equals(java.util.Date.class))
{
     // do something
}

我想知道,还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

如果您想知道方法是否只有Date类型的单个参数,您可以

Class<?>[] parameters = method.getParameterTypes();
if (parameters.length == 1 && parameters[0] == Date.class)) {
    // do something
}

如果可能做得更好

if (parameters.length == 1 && parameters[0].isAssignableFrom(Date.class))

因为那样你会发现该方法是否有一个接受Date的参数。例如,参数可以是ObjectCloneableComparable<?>类型,您仍然可以传递Date