泛型一般是在集合中用得最多,如下代码
List<String> list = new ArrayList<String>(); list.add("123"); String str = list.get(0);
如此一来,list.get(0)的时候就不需要这样:(String)list.get(0)了。
总的来说,泛型的作用就是告诉编译器,对某类型进行限制,如果不符合,则编译器会报错的!!
一般而言,有以下几种不同的用法:
1、普通又常见的用法,即限制某一对象中元素的类型:
List<String> list = new ArrayList<String>(); list.put("one"); String one = list.get(0);
1.1 加强写法:即对List中的元素的类型进行大范围的限制,即Generic或其子类,ps:只能加在变量的声明上,如声明变量时或者声明方法的参数传递的时候等等。另外在new的时候似乎只能给于具体的类型限制,可以是父类or子类的类型,但取出元素的时候,其类型是父类类型的!!!!!
List<? extends Generic> list = new ArrayList<Generic>(); // PS:注意?的使用,这边只能使用问号,不同于2中的使用! ArrayList<? extends Generic> list2 = new ArrayList<Generic>(); List<? extends Generic> list3 = new ArrayList<Gene>(); //new的时候的限制可以是父类or子类的类型 Generic g = list.get(1); //但取出元素的时候,其类型是父类类型的!!!!!
1.2 嵌套的约束,如代码所示,不多解释,反正是<>中所放的类型中还需or可进行约束…… 在对map进行Entry迭代的时候会碰到,别的地方很少见,除非自己写类的时候写到了这种境地……
Map<String,Integer> map = new HashMap<String, Integer>(); for (Iterator<Entry<String, Integer>> i = map.entrySet().iterator(); i.hasNext();) { Entry<String,Integer> e = i.next(); System.out.println(e); }
2、在方法上使用泛型来约束所传入的参数&所返回的参数类型,PS:注意返回类型的写法<T> T ,还有就是返回类型限制的前提是传入参数类型限制的T的存在。
public <T> T fun(T t){ // 可以接收任意类型的数据 //PS:数组的写法,就加<T>T[] & T[] t(c写法T t[])就行了 //另外的一种高级的写法是T...t 可接收可变参数 //,即可接收一个数组或多个单一的元素,但不能混传~ return t ; // 直接把参数返回 }
2.1 类/接口上进行泛型约束,以约束类中的相关的类型,那些集合(list,map)都是这么写的!!)
class Demo<T>{ private T t; public T getT(){return t;} //通过对类进行约束后 //其方法的约束的返回类型就不需要像上面那样写了 public void setT(T t){this.t=t;} }
略略而言就上面这点!
命名类型参数
推荐的命名约定是使用大写的单个字母名称作为类型参数。对于常见的泛型模式,推荐的名称是:
* K —— 键Key,比如映射的键。
* V —— 值Value,比如 List 和 Set 的内容,或者 Map 中的值。
* E —— 异常类 或 集合中的一元素的类型。
* T —— 泛型 或者 说是Type,不知道取什么的时候可以用这个………………
PS:?的使用,在声明变量的时候,用<?>表示可以接收任意的类型,即不作限制,似乎等同于,不写<?>…… 用处见1.1例子!
参考文章:
http://lichaozhangobj.iteye.com/blog/476911
http://blog.csdn.net/zkdemon/article/details/2043503
2022年9月22日 00:37
Hindi is a very important language subject to know in India and we are here to tell you why. In this article, NCERT Hindi Question Paper Class 10 we will be discussing the importance of learning Hindi. From children to adults, everyone takes up a second language at some point in their life. With the ongoing situation, you could have not found a better time to learn a new language.