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

Java 泛型 理论与实践

2013-07-23 14:27 375 查看
分类: 项目开发2013-07-23
09:49 122人阅读 评论(0) 收藏 举报

泛型简介: JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。泛型是 Java 语言走向类型安全的一大步。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

普通泛型

[java] view
plaincopy

class Point<T>{ // 此处可以随便写标识符号

private T var ; // var的类型由T指定,即:由外部指定

public T getVar(){ // 返回值的类型由外部决定

return var ;

}

public void setVar(T var){ // 设置的类型也由外部决定

this.var = var ;

}

};

public class Demo{

public static void main(String args[]){

Point<String> p = new Point<String>() ; // 里面的var类型为String类型

p.setVar("it") ; // 设置字符串

System.out.println(getVar()) ; // 打印字符串

}

};

如果没有泛型, 程序员必须记住对象类型、执行类型转换。这中情况下,很容易导致类型转换的失败

[java] view
plaincopy

class Point{

private String var ;

public String getVar(){

return var ;

}

public void setVar(String var){

this.var = var ;

}

};

public class Demo{

public static void main(String args[]){

Point p = new Point() ;

p.setVar("it") ;

System.out.println((int)getVar()) ; // 类型转换出现错误

}

};

泛型的使用,节省了某些Java中类型之间转换。很明显,泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换操作:编译器保证了这些类型转换的绝对无误。

泛型数组

[java] view
plaincopy

public class GenericsDemo30{

public static void main(String args[]){

Integer i[] = fun1(1,2,3,4,5,6) ; // 返回泛型数组

fun2(i) ;

}

public static <T> T[] fun1(T...arg){ // 接收可变参数

return arg ; // 返回泛型数组

}

public static <T> void fun2(T param[]){ // 输出

System.out.print("接收泛型数组:") ;

for(T t:param){

System.out.print(t + "、") ;

}

}

};

通配符

[java] view
plaincopy

class Info<T>{

private T var ; // 定义泛型变量

public void setVar(T var){

this.var = var ;

}

public T getVar(){

return this.var ;

}

public String toString(){ // 直接打印

return this.var.toString() ;

}

};

public class GenericsDemo14{

public static void main(String args[]){

Info<String> i = new Info<String>() ; // 使用String为泛型类型

i.setVar("it") ; // 设置内容

fun(i) ;

}

public static void fun(Info<?> temp){ // 可以接收任意的泛型对象

System.out.println("内容:" + temp) ;

}

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