Java Generic(-) 为什么需要使用泛型
2013-01-09 00:10
387 查看
泛型:参数化类型,即由于类型的不确定性,我们可以引入一个参数来表示代替某种类型.
为什么需要泛型呢?看以下例子:
在这段程序中,我们有两个重载的方法printMe,一个需要的参数是Character[],另一个是Integer[],具体的方法处理部分基本一致,只是只为数组中的元素类型不同,我们就需要为它定义两个方法来处理,试想一下,如果将来要增加一个打印String, Double, 某一用户自定义类型的Java对象数据时,我们岂不是要n多次地去重载printMe(Type array)这个方法.
试想一下,如果我们能够一种类型去代表要传入地数组中的元素,就像一个参数去代表将来要传递过来的值,那么,我们就可以不用去重载这个printMe()方法了.所以参数化类型(泛型)就应运而生了.
以下是使用泛型方法改造后的代码:
如果将来有用户自定义的类要进行打印的话,只需要这个类实现自已的toString()方法即可.可扩展性极好.
本文出自 “hubert_guo” 博客,转载请与作者联系!
为什么需要泛型呢?看以下例子:
/** * */ 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” 博客,转载请与作者联系!
相关文章推荐
- java基础入门-泛型(1)-为什么需要使用泛型?
- java基础入门-泛型(1)-为什么需要使用泛型?
- java基础入门-泛型(1)-为什么需要使用泛型?
- 使用泛型 类型“System.Collections.Generic.IEnumerator<T>”需要 1 个类型参数
- 使用泛型类型System.Collections.Generic.Icomparer &lt;T&gt; 需要一个类型参数
- 使用泛型 类型System.Collections.Generic.KeyValuePair需要2个类型参数
- java泛型编程学习 笔记一:为什么要使用泛型
- The Java™ Tutorials — Generics :Why Use Generics? 为什么使用泛型
- Java-泛型(Generic)深入使用(与反射结合使用)
- java实际开发中泛型使用需要注意的一些问题
- java中为什么使用泛型,使用泛型的优点?
- Java 容器 & 泛型:六、容器讲到为什么要使用泛型
- 声明方法java实际开发中泛型使用需要注意的一些问题
- Java 容器 & 泛型:六、容器讲到为什么要使用泛型
- Java基础之泛型——使用泛型链表类型(TryGenericLinkedList)
- 为什么Android系统需要使用C、C++和Java语言共同开发
- java实际开发中泛型使用需要注意的一些问题
- 为什么Android系统需要使用C、C++和Java语言共同开发
- (java 必备知识之三) 浅谈java散列原理,为什么java需要散列集合?
- 为什么要使用泛型