Java记录 -73- 泛型详解

本文介绍了JDK5.0中的关键新特性,包括泛型、增强的for循环、自动装箱/拆箱、类型安全的枚举、静态导入及可变参数等。重点阐述了泛型如何提高编译时类型安全性,并通过实例展示了泛型在减少运行时ClassCastException方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK5.0中新特性介绍:

泛型(Generics);

增强的“for”循环(Enhanced For loop);

自动装箱/自动拆箱(Autoboxing/unboxing);

类型安全的枚举(Type safe enums);

静态导入(Static import);

可变参数(Var args);

 

泛型是JDK1.5中一个最重要的特性。通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能。

如果使用泛型,只要代码在编译时没有出现警告,就不会遇到运行时ClassCastException。

JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。

    public static void main(String[] args){        List list = new ArrayList();        list.add("hello");        list.add(11);        list.add(true);                for(int i=0;i<list.size();i++){            System.out.println((String)list.get(i));        }    }

上面的程序在编译的时候可以顺利通过,但在运行的时候则抛出以下异常:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String    at my.arraylist.ArrayListTest3.main(ArrayListTest3.java:15)

如果异常能提前发现,就好了。编译时的错误修改要比运行时的错误修改简单多了。

泛型就给我们提供了这样一个机制,让上面的错误可以提前出现,即编译时期就暴露出来。

    public static void main(String[] args){        List<String> list = new ArrayList<String>();        list.add("hello");        //在编译时以下两行会提示以下错误,无法编译通过        //The method add(int, String) in the type List<String> is not applicable for the arguments (int)        list.add(11);        list.add(true);                for(int i=0;i<list.size();i++){            System.out.println((String)list.get(i));        }    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值