• 泛型




    1. 什么是泛型

    泛型是一个不确定类型的特殊类型,它在使用时才明确类型,这样的好处:

    • 不用代码强转
    • 把运行问题提前到了编译时期

    2. 分类

    • 泛型类
    public class Object<T> {}
    
    • 泛型方法
    public void foo(T t) {}
    
    • 泛型接口
    public interface Inter<T> {}
    
    • 明确泛型
    public void foo(List<Sting> t) {}
    
    • 不明确泛型
    public void foo(T t) {}
    

    3. 操作


    现在有一个需求,把User类型放入集合中,然后遍历

    没有使用泛型

    ArrayList list = new ArrayList();
    
    User user1 = new User();
    User user2 = new User();
    
    list.add(User1);
    list.add(user2);
    //这里容易发生错误,如果不小心把非User类型放入集合呢?这样只有运行时才知道错误,eg:
    //list.add("一个非User类型");
    
    for(user : list){
        System.out.println(user);
    }
    

    使用了泛型

    ArrayList<User> list = new ArrayList();
    
    User user1 = new User();
    User user2 = new User();
    
    list.add(User1);
    list.add(user2);
    //下面直接报错,不能编译
    list.add("一个非User类型");
    
    //强调类型
    for(User user : list){
        System.out.println(users);
    }
    

    通配符及上下限:匹配任意类型

    public void foo(List<?> list){}
    
    public void foo(List<? extends String> list) {}
    
    public void foo(List<? super E> list) {}
    


  • 相关阅读:
    如何提高使用Java反射的效率?
    程序猿必知必会Linux命令之awk
    Java日志正确使用姿势
    “==”、“equals()”、“hashcode()”之间的秘密
    Mybatis缓存
    Java高并发至Synchronized
    web.py
    python爬虫模块理解
    通用http状态码
    SpringMVC的理论
  • 原文地址:https://www.cnblogs.com/Howlet/p/11992627.html
Copyright © 2020-2023  润新知