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 }
  • 相关阅读:
    仿百度翻页(转)
    文字顺时针旋转90度(纵向)&古诗词排版
    微信小程序使用canvas绘制图片的注意事项
    PHP即时实时输出内容
    使用Android Studio遇到的问题
    RuntimeError: Model class users.models.UserProfile doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
    drf中的各种view,viewset
    代码审计:covercms 1.6
    windows下安装phpredis扩展
    python练习:异常
  • 原文地址:https://www.cnblogs.com/tantanjishu/p/4914883.html
Copyright © 2011-2022 走看看