Java泛型

Java泛型

泛型的产生

  • 最初的目的:希望类或方法能够具备最广泛的表达能力。
  • 其他目的:为了创建容器类,例如List、Map等等,泛型可以起到指定容器持有对象的类型。(容器和数组都是储存对象的工具)
  • 为什么Object被替代:因为在向下转型的过程中,如果父类对象不是子类对象的实例,就会出现ClassCastException异常(简单来说就是“没有当过医生的普通人不能变成医生,只有曾经是医生的普通人才可以当医生”),而编译器又不会报错,所以对程序编写造成了麻烦。
  • 实现概念:参数化类型。类型变得像像普通参数一样可以被传入。
  • 术语意思:适应于许多的类型。
  • 注意事项:泛型的类型参数不能是基本类型(例如int),要使用Integer。

元组

  • 概念:将一组对象打包存储与其中的一个单一对象,这个容器对象允许读取其中元素,但是不允许向其中存放新的对象。(该概念也被称为“信使”、“数据传送对象”)
  • 作用:作为方法的返回值,能够让方法一次性返回多个对象。(当然我们能够不使用泛型就能够达到该目的,只需要每一次都创建一个新的类,但是这样过于麻烦,如果我们使用泛型,就可以一次性地解决问题)
//代码示例 这是一个典型的二维元组
public class TwoTuple<A, B> {
	public final A first;
	public final B second;

	public TwoTuple(A first, B second) {
		this.first = first;
		this.second = second;
	}

	@Override
	public String toString() {
		return "TwoTuple [first=" + first + ", second=" + second + "]";
	}
}
//代码示例 这是使用元组的代码
public class TupleTest {
	public static TwoTuple<String,Double> speak(){
		return new TwoTuple<String, Double>("1232", 1.23);
	}
    public static void main(String[] args) {
	    System.out.println(speak());
    }
}

元组使用总结:元组定义好之后,将元组作为方法的返回值,该方法的return语句则可以返回该元组,元组中的对象就可以一次性被该方法返回。

如果我们需要使用更多维的元组,就利用Java的继承机制。下面看一个继承自二维元组的三维元组:

//代码示例
public class ThreeTuple<A, B, C> extends TwoTuple<A, B> {
	public final C third;
	public TwoTuple(A first, B second, C third) {
        super(first,second);
		this.third = third;
	}
}

泛型接口

posted @ 2020-04-07 10:08  leiyangace  阅读(110)  评论(0)    收藏  举报