java-泛型-3

package 泛型;

import java.util.*;


/**
 * 泛型的高级使用 
 * 1.泛型的继承或接口,用extends在<>里面实现 
 * 2.语法:A<T extends anyClass>a;这里的泛型T必须是anyClass的子类 
 * eg:Demo <T extends list>{} 这里的T可以使是ArrayList 或者
 * LinkedList 或者不写 但是不能为HashSet等 因为HashSet不是list的子类
 * 
 * 泛型通配符
 *  1.说明:限制泛型的类型,并且限制泛型对象的使用,不能在类的建立的时候就用
 *   类名<?>{}这样就是错的 
 *   类名<T>{}正确 
 *  2.语法: A<?> a;泛型的通配符,不可以对对象进项添加和修改,但是可以删除,也能读取
 * A<? extends anyClass> a; 泛型必须是anyClass的子类,且此对象不能增加和改写的操作 
 * A<? super anyClass> a;泛型必须是anyClass的父类
 * 
 *
 * @author 小虎牙
 *
 */
public class fanxing2 {
	public static void main(String[] args) {
		
		
		// 第一种情况 A<?> a;
		
		
		
		List<String> li = new ArrayList<>();
		li.add("我有一个梦");

		List<?> l2 = li;
		System.out.println(li.get(0));
		System.out.println("我是第一情况的通配符只能读取:" + l2.get(0));
		/**
		 * 这里使用添加修改就失败了
		 * l2.set(1, "我要添加或者修改");
		 */
		/**
		 * 这里删除就成功啦
		 */
		l2.remove(0);
		System.out.println("这里是li大小:"+li.size());
		System.out.println("这里是l2大小:" + l2.size());
		
		/**
		 * 第二种情况 List<? extends 类名A> a=new arrayList<类名A或者是他的子类>();
		 * 且此对象不能增加和改写的操作
		 */
		
		// 第三种情况 List<? super 类名A> a=new arrayList<类名A或者是他的父类>();
		
		
	}
}

猜你喜欢

转载自blog.csdn.net/huiguo_/article/details/108812753
今日推荐