泛型

泛型(T)
一、认识泛型
(1)JDK1.5版本推出(若低于该版本,需要1.5及更高的版本)
(2)原理:在类声明中,通过一个标识(通常为T),表示类中某个属性的类型或某个方法的返回值及参数类型。
(3)功能:通过泛型创建各种各类型安全的类、接口和方法。
意思是在定义类、接口、方法、方法参数或成员变量时先定其操作对象为通用类型(任意数据类型);在使用时再将通用类型转换成指定的数据类型。
语法:Class 类名<泛型,泛型…>{}
(4)在没有泛型时,我们使用Obeject类型来进行多种类型数据的操作。当需要使用不用数据类型时,显式地对Obeject类进行数据的强制转换来实现操作。缺点:若转换错误,编译不报错,执行时出行java.lang.ClassCastException异常。
对比,我直接写实例化和调用方法:

//定义DataType1类的一个Integer版本
DataType1 intOb1=new DataType1(new Integer(99));
intOb1.showType();          //调用方法
int i1=(Integer)intOb1.getOb();     //强制转换

//定义DataType2类的一个Integer版本
DataType2<Integer>intOb2=new DataType2<Integer>(new Integer(99));
intOb2.showType();
int i2=intOb2.getOb();

二、认识泛型。
1.构造方法中使用泛型

class Con<T>{
	private T value;
	public Con(T value) {
		this.value=value;
	}
	public T getValue() {
		return value;
	}
	public void setValue(T value) {
		this.value = value;
	}
}
public class GenericDemo {

	public static void main(String[] args) {
        Con<String> c=new Con<String>("构造方法中使用泛型");
        System.out.println(c.getValue());
	}
}

2.多个泛型

class Gen<K,T>{}

3.泛型接口
格式:interface 接口名称<泛型标识>{}

class 类名<T> implements 接口名<T>{}

也可以把实现泛型接口的具体子类定义成特定类型的子类,该子类不再是泛型类接口。

class 类名<T> implements 接口名<Integer>{}

4.泛型方法

public <T>T tell(T t){}
public static <T>T getMiddleValue(T[] arrs){}

5.通配符(?
当使用泛型类或接口声明属性、局部变量、参数类型或返回值类型时,可以使用通配符来代替类型参数,如定义某类型List为参数的某计算类。

6.泛型数组(下次补充)
三、泛型的局限
(1)不能使用基本类型的类型参数。
(2)静态成员无法使用类型参数。
(3)不能使用泛型类异常。
(4)不能使用泛型数组。
(5)不能实例化参数类型对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值