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

标签 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
}

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

最佳答案

如果你想知道一个方法是否有一个类型为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 , CloneableComparable<?>你仍然可以通过 Date .

关于java - 在java中使用反射时如何检查方法参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639601/

相关文章:

java:如何在GUI中延迟代码

c# - 如何从 TypeInfo 获取声明和继承的成员

java - 使用java反射获取包名

java - 使用 onItemClickListener 的数组位置

java - 找不到代码有什么问题。 ArrayIndexOutOfBoundsException

java - 字符串解耦和字段名称

java - Java 模块指令如何影响对模块的反射访问?

c# - 使用类型变量转换为枚举

java - 包含集合的 Java 类上的哈希码实现

java - 修改从 wsdl 生成的 java 类的包名