Java:如何检查Field是否为java.util.Collection类型

我有一个实用程序方法,遍历各种类并递归检索字段。 我想检查该字段是否为Collection。 以下是一些示例代码:

void myMethod(Class classToCheck) Field[] fields = classToCheck.getDeclaredFields(); for(Field field:fields) { // check if field if a Collection } 

在此先感谢您的帮助。

 if (Collection.class.isAssignableFrom(field.getType())) { } 

你应该使用Class.isAssignableFrom

 if (Collection.class.isAssignableFrom(field.getType()) ... 

使用getType()方法

 Field field = ...; if ( Collection.class.isAssignableFrom( field.getType() ) ){ //do something with your collection } 

您可以通过以下方式使用getType()

 if (field.getType().equals(Collection.class) { // Do something } 

这仅在字段声明为Collection时才有效。 如果该字段是Collection的子类型(例如ListVector ,则它将不起作用。

 for(Field field:fields) { // check if field if a Collection Object myInstance = field.get(classInstance); // where classInstance is the instance in which the fields is stored if(myInstance instanceof Collection) { //Do your thing } } 

这将测试字段’field’(对象classInstance)引用的实际对象是否实现Collection。 如果要测试声明的Field类型是否实现Collection,那么这将是不同的。

//这执行if

  List cashType = split(" ,AlL "); if(cashType instanceof Collection){ System.out.println("cashType instanceof Collection"); }else{ System.out.println("cashType is not instanceof Collection"); } 

//这会执行其他操作

 List cashType = split(" ,AlL "); if(cashType instanceof Hashtable){ System.out.println("cashType instanceof Collection"); }else{ System.out.println("cashType is not instanceof Collection"); }