Java的泛型入门

来源:互联网 发布:苹果mac装win7系统好吗 编辑:程序博客网 时间:2024/06/06 14:48

各位Java亲们,泛型大家想必早有耳闻 — JDK5.0的新特性之一。深受传智教程的感染,今天就来将泛型给理理。

泛型的应用场景

泛型一般使用在集合上,使用了泛型的集合,这集合的所装载的元素类型就会确定下来;就好比缸是个集合,为了让这个缸只能装米, 就给这口缸贴上一个【米】,不允许这口缸来装其他的东西。我们有个List集合想让他只能放String类型元素,我们就给这个List添加String泛型,例如:List<String>

不使用泛型时的遇到的问题

public class YouXin01 {    public static void main(String[] args) {        List list = new ArrayList();        list.add(new A());        list.add(new B());        // 取出的是Object对象,不能调用A对象里的方法        System.out.println(list.get(0));    }}class A {    public void test() {        System.out.println("这是A");    }}class B {    public void test() {        System.out.println("这是B");    }}

使用泛型情况

List<A> list = new ArrayList<A>();list.add(new A());list.get(0).test();                     //这时就可以调用了

泛型注意的地方

泛型里面写的是一个对象,不能写基本的数据类型,比如int要使用Integer。

基本数据类型 数据类型包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean

泛型的使用

泛型使用在方法上

public class YouXin02 {    public static void main(String[] args) {        Integer[] arr3 = {10, 11, 12, 13, 14};        swap(arr3, 1, 3);        System.out.println(Arrays.toString(arr3));        //结果: 10, 13, 12, 11, 14    }    /**     * 使用泛型方法     * 需要定义一个类型使用大写字母表示T: 这个T表示任意的类型     * 写在返回值之前     * ======表示定义了一个类型,这个类型是T     * 那这样在方法里就可以使用这个类型T了     */    public static <T> void swap(T[] arr,int a,int b) {        T temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }}

泛型在类上的使用

public class YouXin03<T> {              //直接在类名后定义    T aa;                               //在类里面可以直接使用T的类型    public void test11(T bb) {}         //使用泛型类    /*      * 注意: 这是错的,静态方法里是不能使用泛型的     * 在类上面定义的泛型,不能在静态方法里面使用     */    //public static void test12(T cc) {}}