Java学习---泛型(不完整)

1、泛型简介 JDK1.5以后引入

泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的。
泛型的原理就是”类型的参数化“,即把类型看做参数。也就是说把所要操作的数据类型看做参数,就像方法的形式参数是运行时传递的值的占位符一样。
简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息。
泛型可以提高代码的扩展性和重用性。

示例:

public class GenClass <T>{
	private T obj;

	public GenClass (T obj){
		this.obj = obj;
	}
	public T getObj(){
		return obj;
	}
	public void setObj(T obj){
		this.obj = obj;
	}
}
class Cla<T>
{
	T a;
	public Cla(T a){
		this.a = a;
	}
	public T returndate(){
		return a;
	}
}

public class Test {
	public static void main(String[] args) {
		Cla<Integer> c1 = new Cla<Integer>(10);
		System.out.println(c1.returndate());
		Cla<String> c2 = new Cla<String>("zheng");
		System.out.println(c2.returndate());
	}
}

在这里插入图片描述

2、泛型类及特点

1.泛型的类型参数可以是泛型类
2.泛型类可以同时设置多个类型参数
3.泛型类可以继承泛型类
4.泛型类可以实现泛型接口


泛型的类型参数可以是泛型类:

class Cla<T>
{
	T a;
	public Cla(T a){
		this.a = a;
	}
	public T returndate(){
		return a;
	}
}

public class Test {
	public static void main(String[] args) {
		Cla<Cla<Integer>> c1 = new Cla<Cla<Integer>>(new Cla<Integer>(100));//泛型的类型参数可以是泛型类
		System.out.println(c1.returndate().returndate());
	}
}

在这里插入图片描述

3、限制泛型可用类型

在定义泛型类别时,默认在实例化泛型类的时候可以使用任何类型,但是如果想要限制使用泛型类型时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口。
当没有指定泛型继承的类型或接口时,默认使用extends Object,所以默认情况下任何类型都可以作为参数传入。


版权声明:本文为qq_49079545原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。