如何在Java中通过反射检查成员变量是否是Map?

KIC*_*KIC 0 java reflection

我知道我可以使用以下方法检查列表

 Collection.class.isAssignableFrom(field.getType()) 
Run Code Online (Sandbox Code Playgroud)

但是如何检查类中的 Field 是否是 Map 的实现呢?

    void myMethod(Class<?> classToCheck) {
        Field[] fields = classToCheck.getDeclaredFields();

        for(Field field:fields) {
           // check if field implements Map<?,?>
        }
    }
Run Code Online (Sandbox Code Playgroud)

Kon*_*kov 5

您可以使用Field#getType()将返回Class<?>字段的方法。

for(Field field:fields) {
    Class<?> clazz = field.getType();
    boolean isItAMap = Map.class.isAssignableFrom(clazz);
}
Run Code Online (Sandbox Code Playgroud)