java工具:《Long类型转Integer》

简介: java工具:《Long类型转Integer》

image.png

@[toc]

一、介绍

你提供的这段代码和注释非常清晰,核心问题在于 Java 泛型不支持基本类型。下面用一段话介绍这个现象的原因:

这段代码揭示了一个 Java 中容易踩到的陷阱:Arrays.asList() 作用于基本类型数组时,返回的不是预期中的 List,而是 List。原因是 Java 泛型只能用于引用类型,无法直接持有基本类型(如 int)。当传入一个 int[] 时,整个数组被当作一个单个对象放入 List 中,因此 Arrays.asList(arr) 返回的是 List,长度为 1,里面唯一元素就是整个 int[] 数组本身。此时调用 contains(1) 是在检查这个 List 中是否包含整数 1,而 List 里只有整个数组对象,自然返回 false。

而 Integer[] 和 String[] 都是引用类型数组,Arrays.asList() 会将数组中的每个元素分别放入 List,返回的分别是 List 和 List,因此 contains 可以正确匹配元素。

总结:基本类型数组无法被 Arrays.asList() 正确转换为对应包装类型的 List,这是由 Java 泛型的类型擦除和基本类型不支持作为泛型参数共同导致的。若要处理 int[] 的场景,可以手动遍历转换,或使用 Java 8+ 的 Arrays.stream(arr).boxed().collect(Collectors.toList()) 来获得 List。

如果需要,我也可以补充说明这段代码中 Long 与 Integer 转换的相关注意事项,或介绍其他处理基本类型数组的推荐写法。

二、代码

Long number = xxxx;
Integer item = number.intValue();

为啥使用int就判断失效,而使用Integer和String都能准确判断?
```java
/**

  • 问题:为啥使用int就判断失效,而使用Integer和String都能准确判断?
  • 答案:不能将基本数据类型转化为List列表。
    */
    @Test
    public void test1() {
    int[] arr = new int[]{1,2,5,6,9};
    System.out.println(Arrays.asList(arr).contains(1)); //结果为false
    Integer[] arr2 = new Integer[]{1,2,5,6,9};
    System.out.println(Arrays.asList(arr2).contains(1)); //结果为true
    String[] arr3 = new String[]{"1","2","5","6","9"};
    System.out.println(Arrays.asList(arr3).contains("1")); //结果为true
//验证答案如下,把arr、arr2、arr3分别返回查看返回泛型,能够看出Arrays.asList(arr)返回的居然是List<int[]>,问题就出在这,说明list里面包含的是一个个的int[],用这个判断ints.contains(1),肯定为false
List<int[]> ints = Arrays.asList(arr);
List<Integer> integers = Arrays.asList(arr2);
List<String> strings = Arrays.asList(arr3);

}
```
image.png

重要信息

image.png
image.png

目录
相关文章
|
Java 应用服务中间件 Nacos
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
776 0
|
4月前
|
前端开发
前端UI框架介绍VantUI AtUI CubeUI Flutter lonic
前端UI框架介绍VantUI AtUI CubeUI Flutter lonic
173 2
|
4月前
|
JavaScript 开发工具 git
IDEA自动导入包 自动编译 自动保存
IDEA自动导入包 自动编译 自动保存
202 11
|
4月前
|
前端开发 JavaScript ice
前端UI框架介绍 iView ElementUI ICE
前端UI框架介绍 iView ElementUI ICE
183 5
|
4月前
IDEA标签窗口好行显示 类注释和方法注释
IDEA标签窗口好行显示 类注释和方法注释
276 4
|
5月前
|
缓存 NoSQL Java
springboot整合redis五种数据结构API
springboot整合redis五种数据结构API
194 4
|
5月前
|
JSON NoSQL Java
RedisTemplate和StringRedisTemplate的区别及个人见解
RedisTemplate和StringRedisTemplate的区别及个人见解
297 4
|
6月前
|
网络协议 Java Maven
多模块项目使用ElasticSearch报错
多模块项目使用ElasticSearch报错
205 9
|
6月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
372 6
|
7月前
|
XML 数据格式
Parameter ‘**‘ not found. Available parameters are [0, 1, param1, param2]解决办法
Parameter ‘**‘ not found. Available parameters are [0, 1, param1, param2]解决办法
256 4