Java 传参方式

要说的不是Java传值还是传引的问题,而是在程序中,一个方法获取到上层调用传参的方式有哪些,使用场景都是怎么样的问题。

参数列表

这个应该是最常用的传参方式,显式的将参数类型、个数写在方法的参数列表中,每个方法有什么参数都能明显的知道,IDE也可以方便的分析出调用方法、参数调用的代码块。参数列表最具争议的应该是该把所有的参数罗列出来,还是为了减少个数而封装一个参数DTO。就个人而言,一般业务类型的方法如果参数较多的话,我会封装一个DTO并做好注释,而如果是一些工具、通用类的方法,则会罗列出所有的参数方便他人使用。

ThreadLocal

这个在面试中高频出现的考点,而在平时开发中如果能合理使用,也能让代码写得更优雅,模式更灵活。ThreadLocal可以在同一个线程中共享对象并保证线程隔离,所以也可以当成传参的一种方式,需要注意的是这是一种隐式的传参,能让代码看起来更优雅,也能让代码更晦涩,通常在一些和链路相关的地方使用。例如需要在线程中埋一些分析统计的工具,例如调用次数、时间等,就可以寄存一些数据在ThreadLocal中。通常会用在一些和业务不相关的地方(非绝对,例如将Session放在ThreadLocal也是可以的)。使用ThreadLocal的时候通常会出现子线程访问父线程的情形,如果是线程池的场景,可以参考博客ThreadLocal父子线程传递实现方案

DB

DB传值可能就是一种宏观意义上的传值了,平时用的也很多,通过一些参数在DB(SQL、NoSQL、Cache)里获取到相应的值,也就方法能获取到的数据更多了。DB传值需要注意的就是在分布式的场景下,如果DB对象结构发生了改变,那么首次热更新服务器的时候需要做好新、老对象的兼容,否则未更新的服务器可能会接收到新的对象,抛出对象转换异常,反之亦然。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 对于基本数据类型(int, char etc.),传递的是基本数据类型的值的拷贝对于对象引用,传递的是对象对象在堆...
    zhuke阅读 7,190评论 0 2
  • 1 线程封闭 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭...
    JavaEdge阅读 5,733评论 0 7
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,906评论 1 32
  • 九种基本数据类型的大小,以及他们的封装类。(1)九种基本数据类型和封装类 (2)自动装箱和自动拆箱 什么是自动装箱...
    关玮琳linSir阅读 6,038评论 0 47
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,006评论 0 9

友情链接更多精彩内容