1.java泛型的格式
泛型,即“参数化类型”,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型时jdk 1.5 的新特性。泛型指定成某个具体类型就是泛型擦除(发生在编译时期,不是具体指定的参数类型则编译无法通过)。
jdk1.5之后可以选择以下几种写法:
/格式一:前面指定
List<String> list1 = new ArrayList<>();
//格式二:后面指定
List list2 = new ArrayList<String>();
//格式三:前后都指定
List<String> list3 = new ArrayList<String>();
为了更好的规范格式 ,jdk 1.7支持格式一写法,更符合逻辑,泛型的类型可以从前往后进行直接推导
2.泛型出现之前对数组元素的处理方法
在jdk1.5 之前没有泛型,所以参数的类型为Object ,可以在集合中随意添加,在需要遍历时,在对不同的数据类型进行instanceof
判断,然后逐个转型。实现代码如下:
public class TypeDemo1 {
public static void main(String[] args) {
//jdk1.5之前,无泛型的时的集合写法
List list = new ArrayList();
//添加元素 ,此时无泛型,所以add 默认是Object 类型,所以
//不同元素的类型可以随意添加
list.add("as");
list.add(12);
list.add(true);
//获取元素,通过Object 接收,利用增强for循环遍历
for (Object o :list
) {
System.out.println(o);
//把元素转成具体的类型,set类型比较特殊,不像list 一样有序
//由于没有指定类型,取得时候很麻烦,需要按照不同类型依次转换
if (o instanceof String){
String s = (String) o;
}else if (o instanceof Integer){
Integer in = (Integer) o;
}else {
Boolean b = (Boolean) o;
}
}
}
}