Java 泛型介绍和使用

发布于 2021-07-02 13:14:00 字数 2364 浏览 1345 评论 1

java 的泛型是 JDK 1.5 以后出现的安全机制

public static void main(){
  ArrayList al = new ArrayList();
  //ArrayList<String> al2 = new ArrayList<String>();

  al.add("abc1");
  al.add("abc2");
  al.add(4);

  Iterator it = al.iterator();
  //Iterator<String> it = al.iterator();


  while(it.hasNext()){
    String str = (String)it.next();//强转数值类型的会有问题
    //String str = it.next();
    System.out.println(str);
  }
}

泛型出现的好处

1、将运行时的问题 ClassCastException 转到了编译时期

2、避免了强制转换的麻烦

泛型技术是给编译器使用的技术,用于编译时期。确保类型的安全,运行是,会将泛型去掉,生成的class文件中是不带泛型的,这个称为泛型的擦除(为了兼容运行的类加载器)

泛型什么时候使用

当操作的引用数据类型不确定的时候,就用 <>。将要操作的引用数据类型传入即可 其实 <> 就是一个用于接受具体引用数据类型的参数范围。

在程序中,只要用到了带有 <> 的类或者接口,就要明确传入的具体引用数据类型

泛型接口

将泛型定义在接口上

interface Inter<T>{
  public void show(T t);
}

class Intermpl implements Inter<String>{
  public void show(String str){

  }
}

class Intermpl1<Q> implements Inter<Q>{
  public void show(Q q){

  }
}

泛型限定-上限

一般在存储元素的时候都是用上限,因为这样取出都是按照上限类型来运算的。不会出现类型安全隐患。 泛型的通配符:?(未知类型)。

public static void main(String[] args){
  ArrayList<String> al = new ArrayList<String>();
  al.add("abc1");
  al.add("abc2");

  ArrayList<Integer> al2 = new ArrayList<Integer>();
  al.add(1);
  al.add(2);

  printCollection(al);
  printCollection(al2);
}

public static void printCollection(Collection<String> al){
  Iterator<String> it = al.iterator();

  while(it.hasNext()){
    String str = it.next();
    System.out.println(str);
  }
}

修改如下:

public static void printCollection(Collection<?> al){
  Iterator<?> it = al.iterator();

  while(it.hasNext()){
    System.out.println(it.next());
  }
}

还可以对类型进行限定:? extends E(接受E类型或者E的子类型对象)->上限:

public static void printCollection(Collection<? extends Person> al){
   Iterator<? extends Person> it = al.iterator();
}

泛型限定-下限

通常对集合中的元素进行取出操作时,可以是用下限。

public static void printCollection(Collection<?> al){}

等价于:

public static void printCollection(Collection<? extends Object> al){}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

88888888 2021-07-03 13:15:58

不错

~没有更多了~

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文