简单学习Java泛型

作者: 鲨鱼尤德曼 | 来源:发表于2020-05-26 16:38 被阅读0次

为什么使用泛型

  1. 在编译时进行更强的类型检查
  2. 消除类型转换
    以下对比:
List list=new ArrayList();
list.add("hello");
Strings= (String) list.get(0);
List<String> list=new ArrayList<String>();
list.add("hello");
String s=list.get(0);   // no cast

 

原始类型(Raw Types)

Box rawBox=new Box();

原始类型编译时不会进行类型检查,从而将不安全代码的捕获推迟到运行时。因此,应避免使用原始类型。
 

通配符 (Wildcards)

上限通配符 (Upper Bounded Wildcards)

 限定类型为T和它的子类,只读。

Plate<? extends T>
下界通配符类型 (Lower Bounded Wildcards)

 限定类型为T和它的基类,只写。

Plate<? super T>
无界通配符类型 (Unbounded Wildcards)

有两种情况下,无界通配符是一种有用的方法:
1.如果您正在编写可以使用Object class 中提供的功能实现的方法。
2.当 code 使用泛型 class 中不依赖于 type 参数的方法时。对于 example,List.size或List.clear。实际上,经常使用Class<?>,因为Class<T>中的大多数方法都不依赖于T

注意:List<String> 不是 List<Object>的子类

public static void printList(List< ? > list) {
for (Object elem : list)
    System.out.println(elem+" ");
System.out.println();
}
 List<String> strList = Arrays.asList("huang", "lan", "kan");
 List<Integer> intList = Arrays.asList(1, 2, 3, 4);
 printList(strList); //正常调用

反面代码 (List<Object>):

public static void printList(List< Object >list) {
for (Object elem : list)
    System.out.println(elem+" ");
System.out.println();
}
 List<String> strList = Arrays.asList("huang", "lan", "kan");
 List<Integer> intList = Arrays.asList(1, 2, 3, 4);
 printList(strList); //同样的代码但是报错

相关文章

  • java泛型、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • [转载] java泛型(一)、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • 泛型

    与Java泛型相同,Kotlin同样提供了泛型支持。对于简单的泛型类、泛型函数的定义,Kotlin 与 Java ...

  • 【Java 基础】Java 泛型简单入门

    Java 泛型简单入门 前言 自学疯狂Java书籍,认真学习过Java Collection 集合,学的似懂非懂;...

  • 简单学习Java泛型

    为什么使用泛型 在编译时进行更强的类型检查 消除类型转换以下对比: 原始类型(Raw Types) 原始类型编译时...

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • Android 学习(一):Java 泛型

    Java泛型学习 1.0 泛型常用案例 2.0 泛型方法 3.0 泛型类 4.0 通配符 ? 通配符,占位符,标识...

  • 泛型、型变与投影

    简单泛型 kotlin 对于简单泛型的支持与java类似, 可以通过通配符,提升代码的灵活度 限定型泛型 在编码实...

  • Java基础之泛型

    Java基础之泛型 泛型基本介绍 简单介绍在jdk1.6之前,还没有使用到泛型,Java类型分为原始类型、复杂类型...

  • JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义

    本篇主要讲解java泛型的理解、集合中简单使用泛型、自定义泛型结构(包括类、接口、方法)。 一、什么是泛型? 通俗...

网友评论

    本文标题:简单学习Java泛型

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