Lists.newArrayList的一个小坑
把一个用户ID转换成List存储,最开始我使用的方法是:
// 用户ID
Integer userId = 120;
// id 转 List
List<integer> userIds = Lists.newArrayList(userId);
// 通过userIds查询用户列表
List<User> userList = userService.findByIds(userIds);
发现查询的结果一直为空, DEBUG发现userIds一直size = 0
原来是因为 Lists.newArrayList 存在两个重载的方法:
public static <K> List<K> newArrayList(K... c) {
return new ArrayList(Arrays.asList(c));
}
public static <K> List<K> newArrayList(int size) {
return new ArrayList(size);
}
我的调用走了下面的 newArrayList(int size) 方法,只是初始化了列表的长度而已!
按计划应该是走第一个方法 newArrayList(K... c) 。。
于是把调用的代码改成如下:
List<integer> userIds = Arrays.asList(userId);
再次测试, 成功返回了用户数据!
分析原因为:
重载方法的调用优先级:
a.先匹配参数个数
b.参数类型的最佳匹配:直接所属类 (newArrayList(int size) 这个就是直接所属类)
c.如果没有找到直接所属类,会发生向上转型,直至找父类参数,直观上查找顺序为:包装类-》父类-》接口
d.如果向上转型仍无法匹配,则查找可变参数列表 (newArrayList(K... c) 方法就是属于可变参数列表)
Lists.newArrayList的一个小坑的更多相关文章
- 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式
注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...
- go的变量redeclare的问题,golang的一个小坑
go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int 然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会 ...
- mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会
<property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> & ...
- 关于sniff函数的一个小坑
最近在用scapy模块写一个关于WiFi的脚本时用到sniff函数,其中遇到了一个小坑,记录如下: sniff函数是在指定网卡上每次嗅探到一个数据包后然后将它传给prn指定的函数.
- Github作为图床的一个小坑
Github作为图床的一个小坑 前言 听了少铭同学建议把github作为图床,结果遇到了一个小坑,总是显示不出来图片. 问题描述与解决 形如下的链接是显示不出来的: https://github.co ...
- Go的List操作上的一个小“坑”
转自http://sharecore.net/blog/2014/01/09/the-trap-in-golang-list/ 一直想不清楚一个问题,简单设计的东西到底是“坑多”还是“坑少”呢? 复杂 ...
- [LeetCode]29 两数相除和一个小坑点
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...
- 小程序踩过的一个小坑---解析二维码decodeURIComponent() url解码
因为我们需要用户扫码进入小程序,每一个货柜都有一个对应的二维码,当然每个二维码里的信息也不一样.用户扫码进入小程序之后,二维码的信息会以参数q带进去,而我们只能在onLoad事件中拿到这个参数, 但是 ...
- 关于js中 toFixed()的一个小坑
作为一名前端,大家都应该知道,toFixed()的作用,toFixed()经常用于前台与后台数据格式的转换,套用下w3c上面的定义: 定义和用法toFixed(n) 方法可把 Number 四舍五入为 ...
随机推荐
- Gathering Fingerprinting
1. Banner grabbing with Netcat Netcat is multipurpose networking tool that can be used to perform mu ...
- 使用font awesome制作网站常用社交工具联系方式图标
在公司项目或者个人建站时经常会有这么一个需求,就是在网站的底部以图标的形式加入自己的某些常用社交联系方式,比如QQ.微信.微博.Twitter等等,如果采用传统切图的方式去制作这些图标会有两个缺点: ...
- Postgresql查询出换行符和回车符:
1.有时候,业务因为回车和换行出现的错误,第一步,首先要查询出回车符和换行符那一条数据: -- 使用chr()和chr()进行查询 SELECT * )||)||'%'; -- 其实查询chr()和c ...
- IOC应用之 Ninject
什么是Ninject Ninject是一套.Net平台下的高效,超轻量级的依赖注入库.它可以帮助你实现应用程序的松耦合,高内聚,同时也能很灵活的把它们进行组合在一起.借助与Ninject的帮助,代码的 ...
- 一个div实现白眼效果
巧妙利用border和background-clip <div class="eye"></div> .eye{ width:150px; height ...
- 20172328 2018-2019《Java软件结构与数据结构》第九周学习总结
20172328 2018-2019<Java软件结构与数据结构>第九周学习总结 概述 Generalization 本周学习了无向图.有向图.带权图.常用的图算法.图的实现策略. 教材学 ...
- python#读csv,excel,json数据
#读csv,excel,json数据 with open('E:\\test\\xdd.csv','r') as f: for line in f.readlines(): print(line) i ...
- JQuery 绑定单击事件到某个函数的的方法
<script> function 我会在加载完页面马上执行() { alert('我会在加载完页面马上执行'); } function 我只会在按钮点击时才执行() { alert('我 ...
- VS2008中 VB 报错 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
Resvr32 .net中引用控件的名称 如果注册成功,问题不在出现 但是如果是在x64位的系统中,即使控件注册成功,错误依照提示,是因为大多数第三方写的COM控件,只支持32位的系统, 在VS中找到 ...
- React_基本原理_ajax
React 基本原理 初始化显示界面 创建虚拟DOM树 渲染到 原生 DOM 树 绘制界面显示 更新界面 setState() 更新状态机 重新创建虚拟 DOM 树 新/旧树比较差异 (执行一次 DO ...