从头认识java-13.15 使用泛型时出现的问题(1)-泛型不能使用基础类型
来源:互联网 发布:淘宝女士羽绒服中长款 编辑:程序博客网 时间:2024/06/03 16:17
这一章节我们来讨论一下使用泛型时出现的问题。
今天我们引入第一个问题:就是泛型不能使用基础类型。
1.例子
package com.ray.ch13;import java.util.ArrayList;public class Test {public static void main(String[] args) {// ArrayList<int> list;//errorArrayList<Integer> list = new ArrayList<Integer>();}}
观察上面的代码就可以看见,泛型只能使用Integer,不能够使用int。
但是java里面的自动包装机制提供了实现的可能。
修改一下上面的代码:
package com.ray.ch13;import java.util.ArrayList;public class Test {public static void main(String[] args) {// ArrayList<int> list;//errorArrayList<Integer> list = new ArrayList<Integer>();for (int i = 0; i < 10; i++) {list.add(i);}}}
其实i是int类型,但是通过自动包装机制,直接转换成Integer类型。
但是随着数量的增加,上面的代码无疑会出现非常大的性能问题,这个是一个隐患。
2.自动包装机制不是万能的。
例子:
我们下面使用生成器来创建并装载对象。
package com.ray.ch13;public class Test {public static void main(String[] args) {// FillArray.fill(new int[5], new MyGenerator());//errorFillArray.fill(new Integer[5], new MyGenerator());}}interface Generator<T> {T next();}class MyGenerator implements Generator<Integer> {@Overridepublic Integer next() {return 0;}}class FillArray<T> {public static <T> void fill(T[] arr, Generator<T> generator) {for (int i = 0; i < arr.length; i++) {arr[i] = generator.next();}}}
观察上面的代码,在main方法里面,我们分别创建int和Integer的数组,int 的抛异常,在这里,自动包装机制是不起作用的。
总结:这一章节主要讨论了泛型不能使用基础类型这一个问题。
这一章节就到这里,谢谢。
-----------------------------------
目录
0 0
- 从头认识java-13.15 使用泛型时出现的问题(1)-泛型不能使用基础类型
- 从头认识java-13.15 使用泛型时出现的问题(2)-实现参数化接口与重载
- 从头认识java-13.3 泛型接口的使用
- 从头认识java-13.4 泛型方法的使用
- 从头认识java-13.7 什么时候使用泛型?
- 从头认识java-13.8 类型擦除的问题与解决
- 从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
- 从头认识java-10.7 使用异常的限制汇总
- 从头认识java-15.3 使用HashSet需要注意的地方
- 从头认识java-15.4 使用TreeSet需要注意的地方
- 从头认识java-15.5 使用LinkedHashSet需要注意的地方
- 从头认识java-18.3 什么时候使用同步?
- 从头认识java-16.4 nio的读与写(ByteBuffer的使用)
- 从头认识java-18.2 基本的线程机制(2)-Executors的使用
- 从头认识java-8.9 嵌套类(使用static的内部类)
- 从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描
- 从头认识java-13.11 对比数组与泛型容器,观察类型擦除给泛型容器带来什么问题?
- 从头认识java-17.4 详解同步(1)-由竞争条件引发的问题
- JavaScript进阶(十一)JsJava2.0版本
- crt安全警告问题
- hibernate反向工程 (eclipse和myeclipse)
- geoserver中sld设置
- leetcode -- Jump Game II -- 贪心,要看
- 从头认识java-13.15 使用泛型时出现的问题(1)-泛型不能使用基础类型
- 创建maven遇到的问题
- Hive timestamp与date互转的实验
- 流程控制结构
- 虚拟机下的三种网络连接模式
- 你们是不是很缺大数据工程师?
- java学习第一天--窗体程序开发之swt学习
- Spark LDA 主题抽取
- 读书笔记 --《数学之美》_ 中文分词