在JDK5之后java提供了泛型(Java Genertics),允许在定义类的时候使用类型作为参数。泛型广泛应用于各类集合中。本文对其以及其用法进行介绍。 1、一个常见的错误 下面例子中,用List<Object>类型的参数来接收List<String>。 似乎Object是String的父类,并 ...
分类:
编程语言 时间:
2017-09-21 13:41:54
阅读次数:
246
1、泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的. 2、实现GBK编码字节流到UTF-8编码字节流的转换: 操作步骤就是先解码再编码 用new String(sr ...
分类:
编程语言 时间:
2017-09-16 18:43:26
阅读次数:
140
参考:http://blog.csdn.net/lonelyroamer/article/details/7868820#comments因为种种原因,Java不能实现真正的泛型,只能使用类型擦除来实现伪泛型,这样虽然不会有类型膨胀的问题,但是也引起了许多新的问题。所以,Sun对这些问题作出了许多限... ...
分类:
其他好文 时间:
2017-09-04 20:41:24
阅读次数:
144
不能用基本类型实例化类型参数 不能用类型参数代替基本类型:例如,没有Pair<double>,只有Pair<Double>,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储double值。这体现了Java语言中基本类型的独立状态。 运行时类型查询只适用于原始类型 ...
分类:
编程语言 时间:
2017-08-29 17:17:11
阅读次数:
263
假如B类继承A类,数据中有B类,把B类转Data后存入,再取出。由于Model声明的类型是A,那转出来的也是A类型,这样数据就丢失了一部分。 或者存入的是范型集合数据,存入再取出也会发生类型擦除。 原因在于对类对象进行序列化和反序列化时,很多第三方库只是单纯以Model声明的类型为准,没有处理类型擦 ...
分类:
其他好文 时间:
2017-08-22 18:36:50
阅读次数:
150
这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?1.数组package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits ...
分类:
编程语言 时间:
2017-08-10 11:40:39
阅读次数:
142
一、概述 Java泛型在使用过程有诸多的问题,如不存在List<String>.class, List<Integer>不能赋值给List<Number>(不可协变),奇怪的ClassCastException等。 正确的使用Java泛型需要深入的了解Java的一些概念,如协变,桥接方法,以及这篇笔 ...
分类:
其他好文 时间:
2017-07-26 11:38:07
阅读次数:
141
1 意义 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。 常见应用 : ArrayList 2 K T V E ? object等的含义 类型变量使用大写形式 E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类)(需要时还可以用临近的字母U ...
分类:
编程语言 时间:
2017-07-19 22:00:27
阅读次数:
262
第一章 Java的泛型为了兼容性和防止代码爆炸,在编译成字节碼时会进行类型擦除,编译器自动添加代码做类型转换(用到List<Integer>的地方用Integer来做转换),自动做装箱拆箱,做foreach替换,在多个参数的情况下自动打包进一个数组里 第二章 子类型替换原则:任意可以使用父类型值的地 ...
分类:
编程语言 时间:
2017-06-24 17:14:54
阅读次数:
155
1、Java中的泛型是什么,使用泛型有什么好处。 在集合中存储的对象都是Object类的,在使用前进行类型转换是不方便的。 泛型提供了编译期的类型安全,确保把正确类型的对象放入集合中。避免在运行是出现ClassCastException. 2、JAVA中的泛型是如何工作的,什么是类型擦除。 泛型是通 ...
分类:
编程语言 时间:
2017-05-11 14:37:26
阅读次数:
193