美文网首页
巧用Java List.removeAll()方法判定列表中元素

巧用Java List.removeAll()方法判定列表中元素

作者: deniro | 来源:发表于2021-05-01 08:23 被阅读0次

    假设我们有这样一个需求,需要判定配置的 OAuth2 授权类型,是否都在有效范围内。OAuth2 的授权类型只能是这五种:"refresh_token",
    "password", "client_credentials", "authorization_code", "implicit",因为用户可以配置的值可能不在这五种授权类型中,所以需要判定。

    removeAll(Collection<?>c)方法用于从列表中移除指定 collection 中包含的所有元素,我们可以利用这个方法来进行判定。

    首先定义支持的授权类型:

        /**
         * 支持的授权类型
         */
        public static final List<String> GRANT_TYPES = Arrays.asList(new String[]{"refresh_token",
                "password", "client_credentials", "authorization_code", "implicit"});
    

    接着把用户所传入的授权类型放入新的列表 temp,然后使用removeAll() 移除掉支持的授权类型,如果列表 temp 不为空,则所以存在超出范围的授权类型,因此直接抛出异常:

                List<String> temp = new ArrayList<>(grantTypes);
                temp.removeAll(GRANT_TYPES);
                if (!temp.isEmpty()) {
                    throw new IllegalArgumentException("OAuths2 账户名 [" + name + "] " +
                            "下的授权类型只能是这些类型:" + GRANT_TYPES);
                }
    
    

    相关文章

      网友评论

          本文标题:巧用Java List.removeAll()方法判定列表中元素

          本文链接:https://www.haomeiwen.com/subject/oularltx.html