• 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 }
  • 相关阅读:
    针对C#、VB.NET、VB6的WINDOWS API引用
    VBNET的一些特殊能力
    [模块]可以搜索内存中存在的PE结构
    将Excel和XML导入数据库
    VB.NET中使用List
    VBNET使用EXCEL常见操作
    Linux下的C编程实战之开辟平台搭建
    若何进步Linux桌面零碎的速度4
    Linux把持体系中若何布置Tomcat
    如何进步Linux桌面系统的速率1
  • 原文地址:https://www.cnblogs.com/tantanjishu/p/4914883.html
Copyright © 2020-2023  润新知