美文网首页
Java泛型基础

Java泛型基础

作者: lxqljc | 来源:发表于2020-04-26 13:07 被阅读0次
    一、介绍

    泛型就是将类型参数化的过程,就是把变量类型当做一个变量。

    二、使用

    泛型是JDK1.5增加的新特性,泛型有三种使用方式,分别为泛型类、泛型接口、泛型方法。

    1.泛型类
    class Generic<T> {
        private T t;
        public Generic(T t) {
            this.t = t;
        }
    }
    //使用,jdk1.7之后,支持棱形语法
    Generic<Integer> generic1 = new Generic<>(1);
    Generic<String> generic2 = new Generic<>("hello");
    
    2.泛型接口
    interface Generic<T>{
        void setValue(T t);
        T getValue();
    }
    
    3.泛型方法
    public <T> void setValue(T t){
            System.out.println(t);
    }
    
    三、泛型通配符
    1.泛型任意类型(匹配Object及任意类型)
    public static void print(List<?> list){
            System.out.println(list);
        }
    //例如
    List<String> list = new ArrayList<>();
    list.add("hello");
    List<Integer> list2 = new ArrayList<>();
    list2.add(1);
    print(list);
    print(list2);
    
    2.泛型上界(T为Number类型或者Number的子类型)
    class Generic<T extends Number> {
        private T t;
        public Generic(T t) {
            this.t = t;
        }
    }
    //例如:
    Generic<Integer> generic1 = new Generic<>(1);
    Generic<Double> generic2 = new Generic<>(1.1);
    //这里会发生编译错误
    Generic<String> generic3 = new Generic<>("hello");
    
    3.泛型下界(?为String类型或者String的父类)
    public static void print(List<? super String> list){
            System.out.println(list);
        }
    
    四、类型参数命名约定

    最常用的类型参数名称是:

    • E - Element (Java Collections Framework广泛使用)
    • K - Key
    • N - Number
    • T - Type
    • V - Value
    • S,U,V etc. - 2nd, 3rd, 4th types
    五、总结

    1.将运行时可能发生的类型转换错误,提前到编译期检查。

    //例如jdk1.5之前没有泛型的情况下
    List list = new ArrayList();
    list.add(1);
    list.add("hello");
    //这里会发生类型转换错误,运行时才会发现。
    String str = (String) list.get(0);
    

    2.复用代码逻辑.
    3.包含任意通配符?,只能get,不能set

    相关文章

      网友评论

          本文标题:Java泛型基础

          本文链接:https://www.haomeiwen.com/subject/eoeiihtx.html