现在的位置: 首页 > 综合 > 正文

Java泛型

2018年05月09日 ⁄ 综合 ⁄ 共 1374字 ⁄ 字号 评论关闭

  1.       什么是泛型

Java升级到5.0版本,最大的一个特点是具有了泛型。通过使用泛型,可以建立类型安全模式处理各种数据的类、接口和方法。使用泛型,一旦定义了一个算法,它就独立于任何特定的数据类型,不需要而外的操作就可以将算法应用到各种数据类型中。
泛型的本质是指参数化类型。参数化类型的重要性在于:它允许创建这样一些类、接口和方法:即所操作的数据类型被指定为一个参数。操作参数化类型的类、接口和方法就称之为泛型。
2.       如何使用泛型
a.       泛型只使用对象:
声明一个泛型的实例时,传递给形参的类型实参必须是类类型,不能是原始数据类型
b.       泛型的差别是基于类型参数
理解泛型的关键是:对于某种特定版本泛型的引用,与同一泛型的另一种版本的引用是类型不兼容的,例如:泛型Sample<T>,Sample st = new Sample<String>(); Sample si = new Sample<Integer>(); 虽然都是Sample<T>但是由于它们的类型是不相同的,所以指向的也是不同的引用。
c.       泛型怎样增强类型的安全
在没有使用泛型之前,Java是将参数定义为Object类的对象,由于Object是所有Java类的父类,所以一切类的对象都可以定义为Object的对象,这也称之为装箱,之后在将装箱的对象拆箱还原,就必须进行强制转换。例如:Object into= new Integer(100); int inta = ((Integer)into).intValue(); 但是这种强制转换是存在风险的,你不可能将一个字符串”abc”转换为数字。而自从有了泛型,就可以这样来定义了Sample<T>,T tx; 那么泛型的机制会保证在声明一个泛型的类的对象时,Java将进行类型检查,并且强制类型转换是隐式的
3.       泛型示例
A. 一个简单的泛型示例
package com.accp.generic;
 
import java.util.ArrayList;
 
public class GenericArray<E> {
 
 ArrayList <E> colors = new ArrayList<E>();
 
 public void add(E e){
    colors.add(e);
 }
 
 public void print() {
    for (int i=0; i<colors.size(); i++) {
      System.out.println(colors.get(i));
    }
 }
}
 
B.有界类型示例
package com.accp.generic;
 
import java.util.List;
import java.util.ArrayList;
 
public class BoundsClass<T extends Number> {
   
  private List<T> scoreBoard = new ArrayList<T>();
 
 public void add(T score) {
    scoreBoard.add(score);
 }
 
 public void print() {
    for (int i=0; i<scoreBoard.size(); i++) {
      System.out.println(scoreBoard.get(i));
    }
 }
}

抱歉!评论已关闭.