zoukankan      html  css  js  c++  java
  • 008 The Generics In JAVA

    泛型是JAVA的核心特型之一,我们先看一个例子:

    没有使用泛型前,如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class GenericsStu {
        public static void main(String[] args) {
    
            List list = new ArrayList();
            String name = "gavin";
            Integer age = 5;
            list.add(name);
            list.add(age);
    
            for (Object obj : list) {
                String str = (String) obj; // Exception in thread "main"
                                            // java.lang.ClassCastException:
                                            // java.lang.Integer cannot be cast to
                                            // java.lang.String
            }
        }
    }

    使用泛型后如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class GenericsStu {
        public static void main(String[] args) {
    
            List<String> list = new ArrayList<String>();
            String name = "gavin";
            Integer age = 5;
            list.add(name);
            list.add("hello");
            list.add(age);//这个在编译时就提示类型不匹配,如果用的是eclipse,会及时显示错误,避免了运行时异常。
    
            for (String str : list) {
                System.out.println(str);
                
            }
        }
    }

    泛型也可以用于Class,例如:

    使用泛型前,是这样的:

     1 public class GenericsStu {
     2  
     3     private Object t;
     4  
     5     public Object get() {
     6         return t;
     7     }
     8  
     9     public void set(Object t) {
    10         this.t = t;
    11     }
    12  
    13         public static void main(String args[]){
    14         GenericsStu type = new GenericsStu();
    15         type.set(2); 
    16         String str = (String) type.get(); //Exception in thread "main" java.lang.ClassCastException:
    17                                         //java.lang.Integer cannot be cast to java.lang.String
    18         System.out.println(str);
    19     }
    20 }

    使用泛型后,是这样的:

     1 public class GenericsStu<T> {
     2  
     3     private T t;
     4      
     5     public T get(){
     6         return this.t;
     7     }
     8      
     9     public void set(T t){
    10         this.t=t;
    11     }
    12     
    13     public void print(){
    14         System.out.println(t);
    15     }
    16      
    17     public static void main(String args[]){
    18         GenericsStu<String> type = new GenericsStu<String>();
    19         type.set("gavin"); 
    20         type.print();//Output is:gavin
    21         type.set(2);  //编译就不通过,避免了运行时java.lang.ClassCastException
    22         type.print();
    23          
    24 
    25     }
    26 }
  • 相关阅读:
    hdu 2147 kiki's game
    HDU 1846 Brave Game
    NYOJ 239 月老的难题
    NYOJ 170 网络的可靠性
    NYOJ 120 校园网络
    xtu字符串 B. Power Strings
    xtu字符串 A. Babelfish
    图论trainning-part-1 D. Going in Cycle!!
    XTU 二分图和网络流 练习题 J. Drainage Ditches
    XTU 二分图和网络流 练习题 B. Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/tantanjishu/p/4914883.html
Copyright © 2011-2022 走看看