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

泛型(一)

时间:2015-08-01 17:10:41      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

1.泛型程序设计

泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。

在java中增加泛型类之前,泛型程序设计是用继承Object实现的,这样的实现两个问题

第一:得到数据必须强制类型转换。

  ArrayList al = new ArrayList();

  String str = (String)al.get(0);

第二:没有错误检查,任何类的对象都能添加

al.add("abc");
al.add(new Integer(123)); //这样写都不会报错

针对这些问题,泛型提供了一个更好的解决方案:类型参数。类型参数使代码具有更好的可读性,并且不需要进行强制类型转换。

2.泛型类

泛型类就是具有一个或多个类型变量的类。用尖括号(<>)括起来,并放在类名后面。泛型类可以有多个类型变量。如:public class pair<T,U>;

package generic;
/**
 * 泛型类
 * @author 堕落梦醒
 *
 * @param <T>
 */
public class Pair <T>{
    private T first;
    private T second;
    public T getFirst() {
        return first;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public T getSecond() {
        return second;
    }
    public void setSecond(T second) {
        this.second = second;
    }
    
    public Pair(T first, T second) {
        this.first = first;
        this.second = second;
    }
    public Pair() {
        
    }
}

3.泛型方法

既然有泛型类,肯定有泛型方法。泛型方法的类型变量放在修饰符的后面,返回类型的前面。如

pubic static <T> T get(){};

泛型方法可以定义在普通类中,也可以定义在泛型类中。

4.类型变量的限定

有时,类或方法需要多类型变量加以约束,比如下面的代码:

public static <T> T getMiddle(T[] a){
        if(a==null || a.length==0) return null;
        T smallest = a[0];
        for(int i=1;i<a.length;i++){
            if(smallest.compareTo(a[i])>0)  //error
                smallest = a[i];
        }
        return smallest;
    }  

这代码在编译的时候通不过,会报 T 没有CompareTo方法错误,那如何让T有这个方法呢?compareTo这个方法来源于Comparable接口,将T限制为实现了Comparable接口的类,可以通过类型变量T设置限定实现这一点:

public static <T extends Comparable> T min(T[] a)...

如果类型变量或通配符可以有多个限定。限定符用"&"分隔,而逗号用来分隔类型变量

public static <T extends Comparable & Serializable> T min(T[] a)...

 

出处:java核心技术 卷1

泛型(一)

标签:

原文地址:http://www.cnblogs.com/duoluomengxing/p/4694245.html

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