您的位置:首页 > 编程语言 > Java开发

Java Generic(-) 为什么需要使用泛型

2013-01-09 00:10 387 查看
泛型:参数化类型,即由于类型的不确定性,我们可以引入一个参数来表示代替某种类型.

为什么需要泛型呢?看以下例子:

/**
*
*/
package com.skywares.generic;

/**
* @author Administrator
*
*/
public class PrintArray {

/**
* @param args
*/
public static void main(String[] args) {

Integer[] iray = { 1, 2, 3, 4 };
Character[] cray = { 'a', 'b', 'c', 'd' };

printMe(iray);
printMe(cray);

}

private static void printMe(Character[] cray) {
for (Character x : cray) {
System.out.println(x);
}
}

private static void printMe(Integer[] iray) {
for (Integer x : iray) {
System.out.println(x);
}
}

}

在这段程序中,我们有两个重载的方法printMe,一个需要的参数是Character[],另一个是Integer[],具体的方法处理部分基本一致,只是只为数组中的元素类型不同,我们就需要为它定义两个方法来处理,试想一下,如果将来要增加一个打印String, Double, 某一用户自定义类型的Java对象数据时,我们岂不是要n多次地去重载printMe(Type array)这个方法.

试想一下,如果我们能够一种类型去代表要传入地数组中的元素,就像一个参数去代表将来要传递过来的值,那么,我们就可以不用去重载这个printMe()方法了.所以参数化类型(泛型)就应运而生了.

以下是使用泛型方法改造后的代码:

/**
*
*/
package com.skywares.generic;

/**
* @author Administrator
*
*/
public class PrintArrayUseGeneric<T> {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] iray = { 1, 2, 3, 4 };
Character[] cray = { 'a', 'b', 'c', 'd' };
String[] sray = {"ab","bc","cd"};

printMe(iray);
printMe(cray);
printMe(sray);
}

private static <E> void printMe(E[] tray)
{
for(E e : tray)
{
System.out.print(e);
}
System.out.println();
}

}

如果将来有用户自定义的类要进行打印的话,只需要这个类实现自已的toString()方法即可.可扩展性极好.
本文出自 “hubert_guo” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: