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

jAva 泛型

2017年11月04日 ⁄ 综合 ⁄ 共 2472字 ⁄ 字号 评论关闭
分类: 项目开发 122人阅读 评论(0) 收藏 举报

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

 

普通泛型

[java] view
plain
copy

  1. class Point<T>{       // 此处可以随便写标识符号    
  2.         private T var ; // var的类型由T指定,即:由外部指定    
  3.         public T getVar(){  // 返回值的类型由外部决定    
  4.             return var ;    
  5.         }    
  6.         public void setVar(T var){  // 设置的类型也由外部决定    
  7.             this.var = var ;    
  8.         }    
  9.     };    
  10.     public class Demo{    
  11.         public static void main(String args[]){    
  12.             Point<String> p = new Point<String>() ; // 里面的var类型为String类型    
  13.             p.setVar("it") ;        // 设置字符串    
  14.             System.out.println(getVar()) ;   // 打印字符串  
  15.         }    
  16.     };    

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

[java] view
plain
copy

  1. class Point{         
  2.     private String var ;   
  3.         public String getVar(){    
  4.             return var ;    
  5.         }    
  6.         public void setVar(String var){    
  7.         this.var = var ;    
  8.     }    
  9.     };    
  10.     public class Demo{    
  11.         public static void main(String args[]){    
  12.             Point p = new Point() ;   
  13.             p.setVar("it") ;          
  14.             System.out.println((int)getVar()) ;   // 类型转换出现错误  
  15.         }    
  16.     };    

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

泛型数组

[java] view
plain
copy

  1. public class GenericsDemo30{  
  2.     public static void main(String args[]){  
  3.         Integer i[] = fun1(1,2,3,4,5,6) ;   // 返回泛型数组  
  4.         fun2(i) ;  
  5.     }  
  6.     public static <T> T[] fun1(T...arg){  // 接收可变参数  
  7.         return arg ;            // 返回泛型数组  
  8.     }  
  9.     public static <T> void fun2(T param[]){   // 输出  
  10.         System.out.print("接收泛型数组:") ;  
  11.         for(T t:param){  
  12.             System.out.print(t + "、") ;  
  13.         }  
  14.     }  
  15. };  

通配符

[java] view
plain
copy

  1. class Info<T>{  
  2.     private T var ;     // 定义泛型变量  
  3.     public void setVar(T var){  
  4.         this.var = var ;  
  5.     }     
  6.     public T getVar(){  
  7.         return this.var ;  
  8.     }  
  9.     public String toString(){   // 直接打印  
  10.         return this.var.toString() ;  
  11.     }  
  12. };  
  13. public class GenericsDemo14{  
  14.     public static void main(String args[]){  
  15.         Info<String> i = new Info<String>() ;       // 使用String为泛型类型  
  16.         i.setVar("it") ;                            // 设置内容  
  17.         fun(i) ;  
  18.     }  
  19.     public static void fun(Info<?> temp){     // 可以接收任意的泛型对象  
  20.         System.out.println("内容:" + temp) ;  
  21.     }  
  22. };  

抱歉!评论已关闭.