泛型

南笙酒味 提交于 2019-12-06 15:21:47


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) {}




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!