美文网首页Android开发Android技术知识Android开发
学会Java泛型系列(一):Java泛型

学会Java泛型系列(一):Java泛型

作者: 涅小黑 | 来源:发表于2020-03-22 02:03 被阅读0次

泛型(Generics)是一种参数化类型机制,一个类或者方法要处理一个对象一般会使用多态,一是把这个对象定义为接口,就可以处理扩展这个接口的对象了,但这种方法有很大的局限性,被处理类要扩展这个接口,以前的类不能复用的个处理类;或者把接受的对象定义为Object,但这种方式要做类型检查也容易出现ClassCastException。

Java1.5的时候引入泛型的机制,由于要兼容之前版本的代码,Java对于泛型只是在编译器上面动了手脚,所以有一些局限性,后面的章节会详细讲解这点。

下面举一个例子对比泛型带来的好处
未使用泛型:

List list = new ArrayList();
list.add(1);
list.add("123");
list.add(false);
        
Object o1 = list.get(0);
String o2 = (String) list.get(1); //会产生ClassCastException
boolean o3 = (Boolean) list.get(2);

可以看出如果要类型转换才能拿到除Object外的类型,如果你拿到其他人写的方法返回一个list,还有去弄清楚每个元素是什么类型,难以维护。当然我们平时用的时候也不会往一个list放不同类型的对象,但也免不了要查阅list里面约定的是放什么类型和类型转换后才能使用。
使用泛型就可以免除这种烦恼:

List<String> list = new ArrayList<String>();
//List<String> list = new ArrayList<>();  //Java1.7后会自动类型推断
list.add("123");
//list.add(false); //编译器会报错,不允许传非String的类型
        
String o2 =  list.get(0); //不需要转型,编译器会帮忙处理
//boolean o3 = list.get(1);//类型不对应,编译不通过

使用泛型之后,编译器会帮我们做类型约束和检验,可以使代码更优雅

目录

学会Java泛型系列(零):简介及目录
学会Java泛型系列(一):Java泛型
学会Java泛型系列(二):泛型定义与使用
学会Java泛型系列(三):泛型原理-擦除
学会Java泛型系列(四):擦除带来的问题以及解决办法
学会Java泛型系列(五):限定符
学会Java泛型系列(六):常用案例

相关文章

  • Java泛型教程

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

  • 学会Java泛型系列(一):Java泛型

    泛型(Generics)是一种参数化类型机制,一个类或者方法要处理一个对象一般会使用多态,一是把这个对象定义为接口...

  • 第二十八课:泛型

    泛型出现之前 泛型出现之后 Java深度历险(五)——Java泛型

  • Kotlin 泛型

    说起 kotlin 的泛型,就离不开 java 的泛型,首先来看下 java 的泛型,当然比较熟悉 java 泛型...

  • java泛型中类型擦除的一些思考

    java泛型 java泛型介绍 java泛型的参数只可以代表类,不能代表个别对象。由于java泛型的类型参数之实际...

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • 简单回顾Java泛型之-入门介绍

    什么时候开始有了Java泛型?什么是Java泛型?为什么要引入Java泛型?什么时候用到了泛型?可不可以给泛型下一...

  • Java泛型—Java语法糖,只在编译有作用,编译后擦出泛型

    Java泛型—Java语法糖,只在编译有作用,编译后擦出泛型 在代码进入和离开的边界处,会处理泛型 Java泛型作...

  • JAVA 核心笔记 || [xxx] 泛型

    泛型 JAVA 的参数化类型 称为 泛型 泛型类的设计 Learn12.java 运行

  • Kotlin 泛型

    Kotlin 支持泛型, 语法和 Java 类似。例如,泛型类: 泛型函数: 类型变异 Java 的泛型中,最难理...

网友评论

    本文标题:学会Java泛型系列(一):Java泛型

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