我如何封装这个使用“instanceof”的java代码?

发布于 2025-01-10 03:04:16 字数 866 浏览 0 评论 0 原文

如何封装使用 '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;
}

How do I encapsulate code that uses 'instanceof' ,
I have a lot of types to judge, how do I simplify them ? For example using for loops.

            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 :】

My idea is: add the classes you want to judge to a ignoreList collection and iterate using Instanceof.
But have error :Cannot resolve symbol 'get'

public boolean shouldIgnore(Object obj) {

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独﹏钓一江月 2025-01-17 03:04:16

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

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 })

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

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

并像这样调用它:

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

You can use Class objects and use the isInstance method to check if an object is an instance of a particular class:

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

You would use it like this:

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

If you prefer to use List<Class<?>> instead of an array, it works just as well. Change the method signature to:

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

and invoke it like:

shouldIgnore(10, List.of(Number.class, String.class))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文