Java集合框架之_泛型

泛型主要讲解以下四点:

一.泛型类的使用(太简单了,忽略跳过。。。)
二.自定义泛型类、泛型接口、泛型方法的使用
三.泛型与继承的关系
四.通配符


第二:自定义泛型类、泛型接口、泛型方法的使用

  1.自定义泛型类
  1.1:当实例化泛型类的对象时,指明泛型的类型,指明以后,在对应的类中所有使用泛型的位置的类型,都变为实例化中指定的泛型的类型
  1.2:如果我们自定义了泛型类型,但是在实例化中没有使用,那么默认泛型的类型是Object类型

  2.泛型接口:
  2.1:如果现有的接口继承泛型类接口时,指明了泛型的类型,那么此接口在使用父类所有指明泛型类型的位置时,都是此类型。
  2.2:类与接口一直
  2.3:如果在声明类或者接口的时候,仍然不知道该使用那种类型,那么,还是可以使用<T>或者<E>来待定类型

  3.泛型方法的使用
  泛型方法是在泛型类的内部定义的方法,方法的泛型类型跟类的泛型类型不是一个类型,要求调用此方法的时候,传入什么类型方法就返回什么类型,而返回的类型和类的泛型类型不是一个类型

	Order<Boolean> order = new Order();
	order.setT(true);
	System.out.println(order.getT());
	//  泛型方法
	Integer[] in = new Integer[]{1,2,6,90};
	List<Integer> li = new ArrayList<Integer>();
	List<Integer> list2 = order.format(in, li);
	System.out.println(list2);
以上代码表明:Order类的泛型类型为Boolean,但是类里面的泛型方法的参数类型可以是Integer类型的,也就是说泛型方法传入的泛型类型可以和当前类规定的泛型类型不一致,下面我们来看泛型方法是如何编写的。。。

public class Order<T> {
	
	List<T> list = new ArrayList();
	//类的泛型方法是T,而方法的泛型类型是E,表明不一个类型
	// 泛型方法的使用
	/**
	 * 实现数组到集合的复制
	 * @param e
	 * @param list
	 * @return list
	 */
	public <E> List<E> format(E[] e, List<E> list) {
		for (E e1 : e) {
			list.add(e1);
		}
		return list;
	}
 第三:泛型与继承的关系
 如果 A 是 B 的子类,那么List<A>不是List<B>的子接口。

	/**
	 * 3.泛型与继承的关系
	 * 如果 A 是 B 的子类,那么List<A>不是List<B>的子接口
	 */
	// 可行(String是Object的子类,子类可以直接赋值给父类)
	Object obj = null;
	String str = "AA";
	obj = str;
	// 也可行(String是Object的子类,数组子类可以直接赋值给数组父类)
	Object[] object = null;
	String[] string = new String[]{"哈喽","你好"};
	object = string;
	// 不可行
	List<Object> list = null;
	List<String> list1 = new ArrayList<String>();
		list = list1;  // 此处会报错,类型不匹配,他们是并列关系
第四:通配符 ?
 4.1:List<A>、List<B>、·····都是List<?>的子类
 4.2:? extends A:可以存放A及其子类
 4.3:? super A:可以存放A及其父类

	// 可行
	List<? extends Number> list = new ArrayList<Number>();//类是于小于等于Number类型
	List<Integer> list1 = new ArrayList<Integer>();
	list = list1;
	// 可行
	List<? super Number> list2 = new ArrayList<Number>(); //类是于大于等于Number类型
	List<Object> list3 = new ArrayList<Object>();
	list2 = list3;
	// 不可行
	list = list3; // 此处会报错,类型不匹配

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值