java泛型的定义

为什么要是用泛型

  • 是用泛型后意味着编码可以被很多不同类型的对象是重用!
  • 在java中增加泛型设计前,泛型程序设计采用继承实现。ArrayList类只维护一个Object数组,这么做有几个不好的地方,例如下面的例子
    public static ArrayList{
        private Object[] elementData;

        ...

        public Object get(int i){...}
        public void add(Object o){...}

    }
1. 这里在获取值的时候必须要强制转换
2. 这里没有错误检查,可以向数组中添加任何类型的对象
这就导致了当Object为String时,强制转换为int时会报错

泛型的定义

  • 类的定义
    泛型就是一个具有一个或多个变量的类。
    public class Pair<T>{
        private T first;
        private T second;

        public Pair(){
            first = null;
            second = null;
        }

        public T getFirst(){
            return first;
        }

        public T getSecond(){
            return second;
        }

        public void setFirst(T newVlue){
            first = newVlue;
        }

        public void setSecond(T newValue){
            second = newValue;
        }

    }

在这里pair类引入一个类型变量T,你也可以引入多个类型变量

    public class Pair<T,u>{
        ...
    }

这里的变量类型指定方法的返回类型和局部变量例如:

    private T first;

泛型方法

  • 和泛型的类一样指定类型参数
    public class ArrayAlg{
        public static <T> T getMidd(T... a){
            return a[a.lenght / 2];
        }
    }

类型变量放在修饰符的后面(public static)返回类型的前面
泛型方法的定义可以放在泛型类中也可以放在普通类中

  • 如何调用泛型方法
    String middle = ArrayAlg.<String>getMiddle("John","Q.","Public");

在调用方法时,在方法前的尖括号中放入具体的类型。当然在多数情况下我们可以省略具体的类型!编译器也可以额推导出来。这里指的是尖括号中的String类型

猜你喜欢

转载自blog.csdn.net/wolf2s/article/details/78728907