首页 > 其他分享 >Collections.unmodifiableList方法

Collections.unmodifiableList方法

时间:2023-08-10 19:08:23浏览次数:52  
标签:unmodifiableList interceptors util Collections import interceptor 方法 public

在阅读mybatis拦截器链源代码时,发现其是这么写的:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.apache.ibatis.plugin;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

// mybatis拦截器链
public class InterceptorChain {

    // final修饰 interceptors,位于堆内存,引用地址不可改变
    private final List<Interceptor> interceptors = new ArrayList();

    public InterceptorChain() {
    }

    public Object pluginAll(Object target) {
        Interceptor interceptor;
        for(Iterator var2 = this.interceptors.iterator(); var2.hasNext(); target = interceptor.plugin(target)) {
            interceptor = (Interceptor)var2.next();
        }

        return target;
    }

    // 添加拦截器
    public void addInterceptor(Interceptor interceptor) {
        this.interceptors.add(interceptor);
    }

    // 返回一个不可修改的(准确来说,是可以添加,上面有个addInterceptor方法,但是不可以删除)list集合
    public List<Interceptor> getInterceptors() {
        return Collections.unmodifiableList(this.interceptors);
    }
}

Collections.unmodifiableList使用场景:

当我们需要一个不可变集合,不仅指向该集合的引用地址不可变动,集合内的元素也不可改变。

参考上述代码,去除addInterceptor,就可以做到彻底不可改变。


标签:unmodifiableList,interceptors,util,Collections,import,interceptor,方法,public
From: https://blog.51cto.com/u_15668812/7038384

相关文章

  • 软件测试|什么是Python构造方法,构造方法如何使用?
    构造方法(Constructor)是面向对象编程中的重要概念,它在创建对象时用于初始化对象的实例变量。在Python中,构造方法是通过特殊的名称__init__()来定义的。本文将介绍Python构造方法的基本概念、语法和用法。什么是构造方法?在面向对象编程中,构造方法是一个特殊的方法,用于在创建对象时初......
  • SolidWorks2022中文版图文安装教程、激活方法附安装包下载
    一、下载方式[软件名称]:SolidWorks2022[软件语言]:简体中文 [软件大小]:14.7G[安装环境]:Win11/Win10[硬件要求]:[email protected]内存@8G及以上下载链接%70%61%6E%2E%62%61%69%64%75%2E%63%6F%6D/%73/%31%4E%2D%4D%7A%53%41%34%71%32%76%70%5A%4F%51%4B%78%4E%4E%57%41%79%67?%70%77%64=%......
  • Axure 9无法设置移动设备适配的解决方法
    虽然Axure9做了很多移动端的适配工作,移动端的设计体验也好了很多,但是只是在PC端预览有移动端的效果,在移动设备上浏览却没有自动适应屏幕的效果,而且也没有设置移动端的适配的入口而在Axure8中是有这个设置面板的,设置非常方便,如下:   那如何才能设置移动端适配呢,还是有办......
  • 方法的重载
    1,重载就是在一个类中,有相同的函数名称,但形参不同的函数2,方法的重载规则:    1.方法名称必须相同    2.参数列表必须不同,(个数不同,或者类型不同,参数排列顺序不同等)    3.方法的返回类型return可以相同,也可以不相同    4.仅仅返回类型不同不足以成为方......
  • JavaScript常用校验类方法
    #前端常用校验类工具方法#邮箱exportconstisEmail=(s)=>{return/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}123#手机号码exportconstisMobile=(s)=>{return/^1[0-9]{10}$/.test(s)}123#电话号码e......
  • 强行修改 ELF 文件后使用 GDB 进行源码级调试的方法
    使用patchelf命令修改目标文件ld、libc。patchelf--set-interpreter/mnt/hgfs/Share/ld.so--replace-neededlibc.so.6/mnt/hgfs/Share/libc.sopwn.elfGDB直接载入文件。gdbpwn.elf在GDB中设置debug-file-directory及directories,其中debug-file-directory为.buil......
  • 一种基于Nginx的热点数据调度处理方法
    本文分享自天翼云开发者社区《一种基于Nginx的热点数据调度处理方法》,作者:康****彬一、应用场景  基于Nginx的热点数据调度处理,热点节点数据负载均衡处理,减少热点节点压力,提高处理和访问效率;每一个节点的nginx服务接收大量的访问,但是每个节点处理请求都有一个峰值,当请求数......
  • .NET下绕过任意反Dump的方法
    title:.NET下绕过任意反Dump的方法date:2022-03-16updated:2023-04-12lang:zh-CNcategories:-[.NET逆向]tags:-.NET-逆向工程-反转储toc:true文章首发于https://wwh1004.com/net-trick-to-bypass-any-anti-dumping/本文介绍了一种通过CLR内部数据绕过任意......
  • 同步辐射散射数据处理分析方法及过程
    同步辐射散射数据处理分析方法及过程同步辐射散射测试是一种先进的材料表征技术,已广泛应用于材料科学、生物学、化学等领域。同步辐射散射技术利用同步辐射光源产生的高亮度辐射,通过散射实验来研究样品的结构、形态和动态行为。同步辐射散射数据处理分析方法:同步辐射散射实验通常包......
  • Delphi 10.x 提示脚本错误的解决方法
    解决办法如下:10.1版本修改方法:打开注册表,在cmd中输入regedit,以管理员的身份运行,找到HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\18.0\KnownIDEPackages项,找到$(BDS)\Bin\CommunityToolbar240.bpl这个子项目将其内容由EmbarcaderoCommunityToolbarPackage 改为_Em......