码迷,mamicode.com
首页 > 其他好文 > 详细

引出泛型,在程序中的使用和作用。

时间:2016-05-02 23:01:19      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

/**
 *    泛型的概述
 *【目标:泛型的由来和基本使用】       
 1,因为集合可以存储的对象类型是任意的,在取出进行向下转型时,容易发生ClassCastException。
  所以JDK1.5以后就有了解决这个问题的技术:泛型。
 2,泛型的原理:其实就是在操作的元素类型不确定时,通过传递参数的形式来明确类型。
 3,泛型的体现就是 <参数类型变量>用于接收具体的实际元素类型。
 4,泛型技术在集合框架中应用非常广泛,只要记住:在使用类或者接口时,如果接口上有明确<>泛型。
  在使用时,就传递所需的数据类型即可。不传递会出现警告类型不安全提示。
 5,了解:泛型技术是用在编译器部分的技术,一旦类型检查正确,
       生成的class文件中就没有泛型标记了:这是的泛型的擦除。
 6,泛型的好处:
    6.1 将运行时期的ClassCastException异常转移到编译时期通过编译失败体现。
    6.2 避免了强制转换的麻烦。
 7,其实泛型的使用就是往定义了泛型的类或者接口的<>中传递类型参数。
 【学习结果】
1,表述出泛型技术的特点和好处。
2,泛型在集合对象中的使用,要求写集合代码时必须加入泛型。★★★★★
 */
public class GenericDemo {
 
    public static void main(String[] args) {
        //学习泛型之后的正确的做法,加入泛型
        List<String> list = new ArrayList<String>();
        list.add("abc");
        list.add("ab是啊c");
        list.add("ab是c");
//        list.add(6);    编译报错,这就是泛型的好处体现之一,
        //将运行时期的ClassCastException异常转移到编译时期通过编译失败体现。
 
      /*List list = new ArrayList();        实验完毕注释掉
        list.add("string");                    实验完毕注释掉
        list.add("5");                        实验完毕注释掉
        list.add(6);    //发现问题: 编译并不报错
      */        
        /*我们遍历一下集合,看看有没有其他问题*/
        for(Iterator<String> it = list.iterator();it.hasNext();){
//            Object obj = it.next();        实验完毕注释掉
//            System.out.println(obj);    实验完毕注释掉
            /*    打印结果也并无异常
                 string
                5
                6
             * */
            /*为什么没问题呢?因为System.out.println(obj.toString()),调用了toString方法*/
 
            /*那么现在,需求改变,需要打印字符串长度,做法如下*/
            String str = /*(String)*/ it.next(); //字符串长度是String的特有方法,强转是必然的
            /*注意: 定义了泛型,自然不需要强转了
             *这也是泛型好处的另一种体现:避免了强转的麻烦!*/
 
            System.out.println(str.length());//思考:此时再输出会怎么样?
            /* java.lang.ClassCastException: java.lang.
             * Integer cannot be cast to java.lang.String
             * 异常: 类型不能转换异常.
             * 集合中存储元素时,如果存的对象很多,而且对象类型不相同,会出现安全隐患.
             * */
        }
    }
}

 

引出泛型,在程序中的使用和作用。

标签:

原文地址:http://www.cnblogs.com/zyjcxc/p/5453345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!