跟王老师学泛型: 自定义带泛型声明的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学泛型: 自定义带泛型声明的方法相关的知识,希望对你有一定的参考价值。
带泛型声明的方法主讲教师:王少华 QQ群:483773664
学习目标:
掌握泛型方法的定义
掌握泛型方法的使用
一、需求
掌握泛型方法的定义
掌握泛型方法的使用
假设需要实现这样一个方法,该方法负责将一个Object数组的所有元素添加到一个Collection集合中。
1 2 3 4 5 6 7 8 9 10 | /** * 将array中的元素添加到colleciotn中 * @param array * @param c */ public void fromArrayToCollection(Object[] array,Collection<Object> c){ for (Object object : array) { c.add(object); } } |
上面定义的方法没有任何问题,关键在于上面方法中的c的开通,它的数据类型是Collection<Object>。正如前面所介绍的,Collection<Object>不是Collection<String>类的父类,所以这个方法的功能非常有限。比如下面的情况就会引发编译错误:
二、泛型方法
方法,也可以被泛型化,不管此时定义在其中的类是不是泛型化的。在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型。
(一)、语法
1 2 | 修饰符 <T,S> 返回值类型 方法名(形参列表){ } |
泛型方法的语法跟普通方法的语法不同之处在于:多了类型形参声明,类型形参声明以尖括号括起来,多个类型形参之间以逗号隔开,所有类型形参声明放在方法修饰符和方法返回值类型之间。
(二)参考代码
1 2 3 4 5 6 7 8 9 10 | /** * 将array中的元素添加到colleciotn中 * @param array * @param c */ public <T> void fromArrayToCollection(T[] array,Collection<T> c){ for (T t : array) { c.add(t); } } |
(三)测试
1 2 3 4 5 6 7 8 9 10 11 12 | public class GenericTest { public static void main(String[] args) { Needs needs = new Needs(); String[] names = { "孙悟空" , "猪八戒" , "沙悟净" }; List<String> c = new ArrayList<String>(); needs.fromArrayToCollection(names, c); Double[] doubles = { 2.14 , 3.14 }; List<Double> doubleList = new ArrayList<Double>(); needs.fromArrayToCollection(doubles, doubleList); } } |
四、泛型方法:静态泛型方法
1 2 | public static <T> void show(T t){ } |
五、学习视频网址:
http://edu.51cto.com/course/course_id-6083.html
以上是关于跟王老师学泛型: 自定义带泛型声明的方法的主要内容,如果未能解决你的问题,请参考以下文章