泛型的所有技术点

1.允许在定义类、接口时 通过一个标识 表示类中 某个属性的类型 或者是 某个方法的 返回值及参数类型

2.为什么不用Object

	1.集合中,任何类型都可以存储进Obeject,不安全
	2.读数据时要 将 object 强转,不便捷,而且 可能会出现 类型转化异常

3.使用泛型的主要优点是能够在编译时而不是在运行时检测错误

4.自定义泛型类,接口,方法

	1.泛型类:class A<T1,T2,T3>
		1.T 只能是引用数据类型,不能是基本数据类型
		2.泛型类的构造器 只能是 public A(){},不能是 public A<T1,T2,T3>(){}
		3.如果不指定泛型,按Object处理 但 不等同于 Object ,要用一路用,不用都不用
		4.在类/接口上声明的泛型 可以作为非静态属性的类型、非静态方法的参数类型、非静态方法的返回值类型
		但在静态方法中不能使用类的泛型
		5.异常类不能是泛型的
		
	2.泛型方法
		1.[访问权限] <泛型> 返回类型 方法名([泛型标识 参数名称]) 抛出的异常
		2.用作 返回类型,参数
		3.作用,泛型方法能使方法独立于类而产生变化。

5.泛型继承

	1.如果B是A的一个子类 G<B>并不是G<A>的子类型!

	2.父类有泛型,子类可以选择保留泛型也可以选择指定泛型类型
		1.子类不保留父类的泛型:按需实现
			1.没有类型 擦除 Son extends Father == Son extends Father<Object,Object>
			2.具体类型  Son extends Father<Integer,String>

		2.子类保留父类的泛型:泛型子类
			1.全部保留  Son<E,T1,T2> extends Father<T1,T2>
			2.部分保留  Son<E,T1> extends Father<T1,Integer>

6.通配符

	1.为什么会出现:
		List<Obejct> List<String> 不具有继承关系,那我们要写很多重载方法
		所以,我们得找出 他们的 父类 List<?> 

	2.G<?> 是 G<A> G<B>  的父类

	3.G<?> 类型 可不可以 读取 和 写入
		1.写入:只能写 null,例如 list.add(?) 这里面要么写 ? 要么写 null(一般就不写入,无意义)
		2.读取:可以读取 例如 List<?> list = new ArrayList<String>() list.get(index) 是可以读到数据的用Object接收
		
	4.有限制条件的通配符
		1. List<? extends Student> list1  只能是List<Student 及其 子类> 的 父类 
		就是给 ?加 一些 限制 条件 导致 它 只能是 有限制条件 的父类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值