您的位置:首页 > 移动开发 > Objective-C

跟王老师学泛型(五): 自定义带泛型声明的方法

2016-05-18 12:40 531 查看

带泛型声明的方法

主讲教师:王少华 QQ群:483773664

学习目标:

掌握泛型方法的定义掌握泛型方法的使用

一、需求

假设需要实现这样一个方法,该方法负责将一个Object数组的所有元素添加到一个Collection集合中。
/**
* 将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>类的父类,所以这个方法的功能非常有限。比如下面的情况就会引发编译错误:

二、泛型方法

方法,也可以被泛型化,不管此时定义在其中的类是不是泛型化的。在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型。(一)、语法
修饰符 <T,S> 返回值类型 方法名(形参列表){
}
泛型方法的语法跟普通方法的语法不同之处在于:多了类型形参声明,类型形参声明以尖括号括起来,多个类型形参之间以逗号隔开,所有类型形参声明放在方法修饰符和方法返回值类型之间。

(二)参考代码

/**
* 将array中的元素添加到colleciotn中
* @param array
* @param c
*/
public <T> void fromArrayToCollection(T[] array,Collection<T> c){
for (T t : array) {
c.add(t);
}
}

(三)测试

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);
}
}

四、泛型方法:静态泛型方法

public static <T> void show(T t){
}

五、学习视频网址:

http://edu.51cto.com/course/course_id-6083.html

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息