在 java 中使用反射时如何检查方法参数的类型
How to check the type of method parameter when use reflection in java
我有这样的方法:
public void get(Date date)
我是用反射得到的,我想检查参数的类型,确定它是否是java.util.Date的类型,我是这样做的:
Class<?> parametersType = method.getParameterTypes();
// check it
if (parametersType[].equals(java.util.Date.class))
{
// do something
}
我想知道,请问还有其他方法吗?
如果你想知道一个方法是否有一个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
的参数。例如,参数可以是 Object
、Cloneable
或 Comparable<?>
类型,您仍然可以传递 Date
.
我有这样的方法:
public void get(Date date)
我是用反射得到的,我想检查参数的类型,确定它是否是java.util.Date的类型,我是这样做的:
Class<?> parametersType = method.getParameterTypes();
// check it
if (parametersType[].equals(java.util.Date.class))
{
// do something
}
我想知道,请问还有其他方法吗?
如果你想知道一个方法是否有一个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
的参数。例如,参数可以是 Object
、Cloneable
或 Comparable<?>
类型,您仍然可以传递 Date
.