ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}
背景
业务开发需要判断业务状态是否在30、40、50、60的集合内,所以写了以下代码
int[] inLiq = {30,40,50,60};
return Arrays.asList(inLiq).contains(o.getOrderStatus());
自我Review代码时,验证了下这行代码,发现状态为30时,仍然返回false。
在自我怀疑中调整代码,并验证,代码如下:
Integer[] integerArray = {30, 40, 50,60};
List<Integer> integerList = Arrays.asList(integerArray);
System.out.println(integerList.contains(30)); // true
System.out.println(integerList.contains(Integer.valueOf(30))); // true
System.out.println(integerList.contains(Integer.valueOf(30).intValue())); // true
int[] intArray = {30, 40, 50,60};
List<int[]> intList = Arrays.asList(intArray);
System.out.println(intList.contains(30)); // false
System.out.println(intList.contains(Integer.valueOf(30))); // false
System.out.println(intList.contains(Integer.valueOf(30).intValue())); // false
没想很明白,于是问了下ChatGPT。
ChatGPT的回答
Arrays.asList() 方法返回的结果类型取决于传入的参数类型。让我们来看一下这两个情况。
在第一种情况下,integerArray 是一个包装类型(Integer)的数组。当你将它作为参数传递给 Arrays.asList() 方法时,它会将数组的元素视为独立的对象,并返回一个泛型为 Integer 的 List。也就是说,它会将数组中的每个元素转换为相应的 Integer 对象,并将这些对象放入列表中。
Integer[] integerArray = {30, 40, 50, 60};
List<Integer> integerList = Arrays.asList(integerArray);
在这种情况下,integerList 是一个泛型为 Integer 的列表,可以通过索引访问、迭代等操作。
而在第二种情况下,intArray 是一个基本类型(int)的数组。当你将它作为参数传递给 Arrays.asList() 方法时,由于基本类型不能作为泛型参数,它会将整个数组作为单个元素放入列表中。也就是说,返回的是一个 List<int[]>,其中的元素类型是 int[]。
int[] intArray = {30, 40, 50, 60};
List<int[]> intList = Arrays.asList(intArray);
在这种情况下,intList 是一个泛型为 int[] 的列表,它包含了一个元素,即原始的 int 数组。因此,你无法通过索引访问数组的元素,而只能通过 intList.get(0) 访问整个数组。
总结来说,Arrays.asList() 方法根据传入的参数类型决定返回的结果类型,基本类型数组会被视为单个元素放入列表中,而包装类型数组会将每个元素都作为独立对象放入列表中。
ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}的更多相关文章
- 为什么接口要规定成员变量必须是public static final的呢?(转)
在interface里面的变量默认都是public static final 的.所以可以直接省略修饰符: String param="ssm"://变量需要初始化 为什么接口要规 ...
- 接口中定义变量必须为public static final的原因
在interface里面的变量默认都是public static final 的,原因如下: 1. 接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是 ...
- 突然的明白--public static 类名 函数名()
public static ImageUtilEngine getImageEngine() { return imageEngine; } 这个是什么啊........纠结了一个多星期的东西 忽然间 ...
- public static void Invoke (Action action)
using System; using System.Security.Principal; using System.Security.Permissions; namespace Demo { c ...
- Spring MVC exception - Invoking request method resulted in exception : public static native long java.lang.System.currentTimeMillis()
最近在线上系统发现下面的异常信息: 2014-10-11 11:14:09 ERROR [org.springframework.web.servlet.mvc.annotation.Annotati ...
- public static void main(String[] args){}函数理解
主函数的一般写法如下: public static void main(String[] args){…} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为publi ...
- public static void main(String[] args){}函数诠释
public static void main(String[] args){}函数诠释 主函数的一般写法如下: public static void main(String[] args){-} 下 ...
- static public和 public static 区别
static:加static 的是静态成员,不能实例化在你运行的时候他自己在内存中开辟了块空间,不用在new, 有点像全局变量,如果不用你必须去 实例化(new)才能用 static是静态的意思,pu ...
- 浅析 public static void main(String[] args)
最初接触Java程序的时候,老师就教导我们要从下面这句开始学起,据说是约定俗成的,所以直到今天,还是只知道java程序应该这么写,具体为什么这么写,鄙人惭愧. public class ClassNa ...
- public static <T> Map<String, T> json2map
/** * json string convert to map with javaBean */ public static <T> Map<String, T> json2 ...
随机推荐
- Node.js 中的事件循环机制
一.是什么 在浏览器事件循环中,我们了解到javascript在浏览器中的事件循环机制,其是根据HTML5定义的规范来实现 而在NodeJS中,事件循环是基于libuv实现,libuv是一个多平台的专 ...
- 当服务器间通讯出现No route to host(Host unreachable)
服务器间通讯出现No route to host(Host unreachable) 背景:因为某些原因,主机房服务器集体重启,其中部署的系统也需要重启,负责的系统是五台服务器,两台用来作为应用的应用 ...
- 【笔记】go语言--接口
[笔记]go语言--接口 接口的概念 强类型语言:熟悉接口的概念 弱类型语言:没(少)有接口的概念 接口的详解︰使用Google Guice实现依赖注入 curl 是获取http请求的命令工具 cur ...
- 中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结
简介: 中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现.Kubernetes 原生服务部署.服务治理等核心能力.来自中仑网络的技术负 ...
- 赋予企业更多可能,云数据库SQL Server 2019版这几大亮点别错过
直播预告 2020年3月26日 15:00-16:30 邀您一同见证 云数据库SQL Server 2019版重磅发布 全面提升性价比及数据库能力 点我观看 RDS SQL Server 2019不仅 ...
- 基于 Flink SQL 构建流批一体的 ETL 数据集成
简介: 如何利用 Flink SQL 构建流批一体的 ETL 数据集成. 本文整理自云邪.雪尽在 Flink Forward Asia 2020 的分享,该分享以 4 个章节来详细介绍如何利用 Fli ...
- 基于DataWorks搭建新零售数据中台
文章作者:许日(欢伯),在2016年盒马早期的时候,转到盒马事业部作为在线数据平台的研发负责人,现任阿里云计算平台DataWorks建模引擎团队负责人. 文章简介:本篇文章向大家分享新零售企业如何基于 ...
- 深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法
简介:研发效能提升不知从何下手.一头雾水?阿里资深技术专家一文为你揭秘研发效能提升的系统方法. 注:本文是对云栖大会何勉分享内容的整理 这几年"研发效能"一直是热词,很多组织 ...
- 基于MaxCompute SQL 的半结构化数据处理实践
简介: MaxCompute作为企业级数据仓库服务,集中存储和管理企业数据资产.面向数据应用处理和分析数据,将数据转换为业务洞察.通过与阿里云内.外部服务灵活组合,可构建丰富的数据应用.全托管的数据 ...
- [DApp] Moralis 生产阶段的服务安全设置 -锁定数据库
Moralis 的基础设施数据库是使用的 MongoDB,其非常适合Dev阶段的快速开发. 如果进入生产环境,需要锁定数据库,防止任何用户可利用SDK向Mongo插入多余数据. 另外,Moralis ...