如何封装这个使用 'instanceof' 的 java 代码?

How do I encapsulate this java code that uses 'instanceof'?

如何封装使用了'instanceof'的代码, 我有很多类型要判断,如何简化它们?例如使用 for 循环。

            if (obj instanceof UserLogin) {
                continue;
            }
            if (obj instanceof MultipartFile) {
                continue;
            }
            if (obj instanceof Part) {
                continue;
            }
            if (obj instanceof HttpServletRequest) {
                continue;
            }
            if (obj instanceof HttpServletResponse) {
                continue;
            }


   //【Simplify using for loops :】

我的想法是:将你要判断的类添加到一个ignoreList集合中,使用Instanceof进行迭代。 但是有错误:无法解析符号 'get'

public boolean shouldIgnore(Object obj) {

    for (int i = 0; i < ignoreList.size(); i++) {
        if (obj instanceof ignoreList.get (i) ){
            return true;
        }
    }
    return false;
}

您可以使用 Class 对象并使用 isInstance 方法来检查对象是否是特定对象的实例 class:

public static boolean shouldIgnore(Object obj, Class<?>[] ignoreList) {
    for (Class c : ignoreList) {
        if (c.isInstance(obj)) {
            return true;
        }
    }
    return false;
}

你会像这样使用它:

shouldIgnore(new Integer(10), new Class<?>[] { Number.class, String.class })

如果您更喜欢使用 List<Class<?>> 而不是数组,它也同样有效。将方法签名更改为:

public static boolean shouldIgnore(Object obj, List<Class<?>> ignoreList) 

并像这样调用它:

shouldIgnore(10, List.of(Number.class, String.class))