泛型类:具有一个或多个泛型变量的类被称之为泛型类。
泛型方法的特点:
l方法的参数中会使用泛型变量;
l方法的返回值中会使用泛型变量。
调用泛型方法时无需指定泛型变量,编译器会通过实际参数的类型来识别泛型变量的类型,上例中传递的参数为String[]类型,那么相当于给泛型类型T赋值为String。
继承泛型类需要为父类的泛型变量赋值!就好比创建泛型类的对象时需要给泛型变量赋值一样。
为了说明通配符的作用,我们先看个例子:
上面的调用都是编译不通过的!
这说明想写一个即可以打印list1,又可以打印list2的方法是不可能的!
如果把fun()方法的泛型参数去除,那么就OK了。即不使用泛型!
上面代码是没有错了,但会有一个警告。警告的原因是你没有使用泛型!Java希望大家都去使用泛型。
你可能会说,这里TMD根本就不能使用泛型。
4.1通配符概述
通配符就是专门处理这一问题的。
上面代码中的“?”就是一个通配符,它只能在“<>”中使用。造成不能把它从“<>”中拿出来。
这时你可以向fun()方法传递List<String>、List<Integer>类型的参数了。当传递List<String>类型的参数时,表示给“?”赋值为String;当传递List<Integer>类型的参数给fun()方法时,表示给“?”赋值为Integer。
4.2通配符的缺点
它是将一种人体天然的“透明质酸”配合以其他促进细胞再生除皱药物制成一种凝胶,通过注射方法使用。 用途:活性氧化铝生产专利资讯信息,活性氧化铝干燥剂行业知识问答,吸附剂活性氧化铝改进方法 活性氧化铝在催化剂中使用氧化铝的通常专称为&ldquo活性氧化铝&rdquo,它是一种多孔性、高分散度的固体材料,有很大的表面积,其微孔表备催化作用所要求的特性,如吸附性能、表面活性、优良的热稳定性等,所以广泛地被用作化学反应的催化剂和催化剂载体。将一种人体天然的透明质酸配合以其他促进细胞再生除皱药物制成一种凝胶,通过注射方法使用经注射进入整形部位,注射入的胶原逐渐降解并被人体自身的胶原所代替,留在整形部位,起到永久效果,并保证局部组织柔软。appid=".deserializeobject(result),我在这里主要介绍一下如果通过回调方法获取相关参数。
上面的问题是处理了,但通配符也有它的缺点。
在上面例子中,List<?> list参数中的通配符可以被赋任何值,但同时你也不知道通配符被赋了什么值。
当你不知道“?”是什么时,会使你不能使用任何与泛型相关的方法。也就是说fun()方法的参数list不能再使用它的与泛型相关的方法了。例如:list.add(“hello”)是错误的,因为List类的add()方法的参数是T类型,而现在你不知道T是什么类型,你怎么去添加String的东西给list呢?如果使用者在调用fun()方法时传递的不是List<String>,而是List<Integer>时,你添加String当然是不可以的。
当然,还可以调用list的get()方法。就算你不知道“?”是什么类型,但它肯定是Object类型的。所以你可以:Object o = list.get(0);
4.3通配符的限制
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-93010-1.html
已开了第一炮