把一个用户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的一个小坑的更多相关文章

  1. 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式

    注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...

  2. go的变量redeclare的问题,golang的一个小坑

    go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int   然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会 ...

  3. mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会

    <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> & ...

  4. 关于sniff函数的一个小坑

    最近在用scapy模块写一个关于WiFi的脚本时用到sniff函数,其中遇到了一个小坑,记录如下: sniff函数是在指定网卡上每次嗅探到一个数据包后然后将它传给prn指定的函数.

  5. Github作为图床的一个小坑

    Github作为图床的一个小坑 前言 听了少铭同学建议把github作为图床,结果遇到了一个小坑,总是显示不出来图片. 问题描述与解决 形如下的链接是显示不出来的: https://github.co ...

  6. Go的List操作上的一个小“坑”

    转自http://sharecore.net/blog/2014/01/09/the-trap-in-golang-list/ 一直想不清楚一个问题,简单设计的东西到底是“坑多”还是“坑少”呢? 复杂 ...

  7. [LeetCode]29 两数相除和一个小坑点

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  8. 小程序踩过的一个小坑---解析二维码decodeURIComponent() url解码

    因为我们需要用户扫码进入小程序,每一个货柜都有一个对应的二维码,当然每个二维码里的信息也不一样.用户扫码进入小程序之后,二维码的信息会以参数q带进去,而我们只能在onLoad事件中拿到这个参数, 但是 ...

  9. 关于js中 toFixed()的一个小坑

    作为一名前端,大家都应该知道,toFixed()的作用,toFixed()经常用于前台与后台数据格式的转换,套用下w3c上面的定义: 定义和用法toFixed(n) 方法可把 Number 四舍五入为 ...

随机推荐

  1. 利用jQuery如何获取当前被点击的按钮

    如下代码 <tr> <td><a href="javascript:void(0)">点我1</a></td> < ...

  2. 末学者daylight__Linux磁盘管理及LVM

    一.硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上 ...

  3. 使用apt-get安装相关的软件时,不能Fetch,现在更新为国内的源!

    我使用的是中国科技大学的树莓派的软件源,测试可以使用(更新时间:2018年7月15日) deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie ...

  4. cache 缓存的处理

    , ) { ? ? ) && ? lstorage.remove(key) : sstorage.remove(key) } /** * 更新缓存配置文件 */ Cache.proto ...

  5. line-height:1.5和line-height:150%的区别

    1. 给你个数,孩子自己算吧  line-height:1.5 父元素设置line-height:1.5会直接继承给子元素,子元素根据自己的font-size再去计算子元素自己的line-height ...

  6. Chapter 2 Basic Elements of JAVA

    elaborate:详细说明 Data TypesJava categorizes data into different types, and only certain operationscan ...

  7. ubuntu中如何安装python3.6

    此处使用命令行方式来安装Python3.6: sudo wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz sudo ta ...

  8. 那些年我们跳过的 IE坑

    一,  IE input X 去掉文本框的叉叉和密码输入框的眼睛图标 解:    从IE 10开始,type=”text” 的 input 在用户输入内容后,会自动产生一个小叉叉(X),方便用户点击清 ...

  9. java遍历List中的map的几种方法

    Student 类 public class Student { private String name; private int age; private int taller; public St ...

  10. js面向对象关键点

    函数加new 工作流程: (1) 创建一个新对象: => var this = new Object(); (2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) : (3) ...