泛型基本概念

public class Test {
	public static void main(String[] args) {
		//泛型 参数化类型
		//泛型出现的一个很重要的原因,就是需要创建能够容纳任何类型的容器类的需求
		//java5之前用的是object来存储。但是这样会导致可以存多种类型
		//我们确实需要容器能够支持不同类型,但是具体存储的时候,我们希望只能存储一种,以防止错误发生,然而object会接受任何类型
		//这就导致泛型的出现 泛型的本质就是暂时不指定类型,稍后制定类型,一旦指定,就必须存储这一种类型的对象了
		//元组用来存储几个对象,能够一次性打包返回多个对,他的实现就是依赖与java的泛型机制
		//元组可以通过继承不断的扩展存储数量
		//Java泛型的一个缺陷:基本数据类型无法作为泛型参数,但是借助于Java的自动打包和自动拆包机制,这种局限也不是问题
		//泛型方法独立于泛型类 如果可能尽量使用泛型方法
		//static方法无法访问类的泛型参数,这很好理解,因为确定泛型参数的具体类型需要在创建对象时,而静态方法不依赖于创建对象,因此
		//如果静态方法需要泛型,那么只能使用方法泛型参数
		//要定义泛型方法,只需要将泛型参数列表置于返回值之前即可,并且用尖括号括起来
		//当我们使用泛型类时,必须声明参数类型的具体类型,但是使用泛型方法时,不必指定泛型参数具体类型,编译器会类型参数推断,因此调用和普通方法一样
		//当然类型方法使用时也可以指定参数,就是在点操作符和方法名之间插入尖括号
		//class类型生成的class对象 如果是一个类 那么两个对象引用实际上指向的是一个对象 也就是一个类型对应一个class对象 这点很重要
		//理解java泛型的擦除机制 
		//为了消除java泛型机制带来的不便,可以给泛型指定边界。比如<T extends Hash> 这个边界表示泛型只能接受Hash和Hash的导出类
		//为什么java使用泛型,本质上是为了兼容性,因为java开始设计的时候没有泛型,1.5之后才有泛型机制,因此为了兼容非泛型类库,只能使用泛型擦除机制
		//因此类库的使用既可以支持泛型,也可以不写泛型,因此泛型使用不是强制的
	}
}
//两种类不能被继承,一种是final类,一种是构造器为private的类
class Person{
	private Person() {
	}
	
}

class Student extends Person{
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值