《Java 2核心技术》读书笔记──泛型程序设计(1)

作者在 2006-11-02 05:15:00 发布以下内容
作者:admin 日期:2006-09-14
 
    最近有空翻阅了《Java  2核心技术》卷I,对于其中的第十三章──泛型程序设计的章节摘录了下面的内容做为读书笔记,以便日后方便查看。
    从java程序设计语言1.0版本发布以来,变化最大的部分就是泛型。
    泛型正是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后进行强制类型转换的代码具胡更好的安全性和可读性。
 
    一.为什么使用泛型
    泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。
    在JDK5.0以前,Java泛型是用继承来实现的。如ArrayList类:
    public class ArrayList{
        public Object get (int i){...}
        public void add(Object 0){...}
 
        private Object[] elementData;
    }
    如果我们在ArrayList放入File对象和String对象,这样的实现存在两个问题。
1.    取值时必须进行强制类型转换
    ArrayList files = new ArrayList();
    ...
    String filename = (String)files.get(0);
    2.可以向数组列表中添加任何类的对象,因为不存在错误检查。但如果放入一个File   对象而试图将取出的对象强制转化为String类型,将产生一个错误。
    ArrayList files = new ArrayList();
    file.add(new File("..."));
    String filename = (String)files.get(0); //ERROR
 
    JDK5.0提供了泛型作为解决方法,使用类型参数来指示元素类型。
    ArrayList<String> files = new ArrayList<String>();
    这将使代码具有更好的可读性,在取得数组元素的时候也不用进行强制类型转换了,编译器知道返回类型为String,也可以检查插入的对象是不是String对象。
    String filename = files.get(0); //OK
    files.add(new File("...")); //无法通过编译
 
    二、简单泛型类型的定义
    泛型类是具有一人或者多个类型变量的类。
    例如,定义一个Pair类用于存储一个对象对。
    public class Pair<T>{
        private T first;
        private T second;
       
        public Pair(){
            first = null;
            second = null;
        }
        public Pair(T first, T second){
            this.first = first;
            this.second = second;
        }
       
        public T getFirst(){
            returnfirst;
        }
        public T getSecond(){
            returnsecond;
        }
        public void setFirst(T newValue){
            first = newValue;
        }
        public void setSecond(T newValue){
            second = newValue;
        }
    }
    其中T是类型变量,指定返回类型和局部变量类型。用具体的类型代替类型变量可实例化泛型类型。如:
    Pair<Strin
java | 阅读 1051 次
文章评论,共0条
游客请输入验证码
浏览92503次