《java编程思想》学习笔记——第十五章泛型

     2022-03-16     792

关键词:

    在面相对象编程中,多态算是一种泛化机制。

    泛型实现了参数化类型的概念。

    泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。


    元组

    仅一次方法调用就能返回多个对象,你应该经常需要这样的功能吧。可是return语句只允许返回单个对象。因此,解决方法就是创建一个对象,用它来持有想要返回的多个对象。例:

    public class TwoTuple<A,B> {}

    public class ThreeTuple<A,B,C> extents TwoTuple<A,B> {}

    public class FourthTuple<A,B,C,D> extents ThreeTuple<A,B,C> {}

    public class FiveTuple<A,B,C,D,E> extents FourthTuple<A,B,C,D> {}


    泛型接口

    和泛型类的用法一样,例:

    public interface Generator<T> { T next(); }


    泛型方法

    无论何时,只要你能做到,你就应该尽量使用方法。也就是说,如果使用泛型方法可以取代将整个类型泛型化,那么就应该只使用泛型方法,因为它可以使事情更清楚明白。另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。

    要定义泛型方法,只需将泛型参数列表置于返回值之前。

    当使用泛型类时,必须在创建对象的时候指定类型参数的值,而使用泛型方法的时候,通常不必指明参数类型,因为编译器会为我们找出具体的类型。这称为"类型参数推断(type argument inference)"。


    显式的类型说明

    要显式地指名类型,必须在点操作符和方法名之间插入尖括号,然后把类型置于尖括号内。


    可变参数与泛型方法

    泛型方法与可变列表能够很好地共存,例:

    public class C {

        public <T> void f(T... args) {

            

        }

    }


    擦除

    在泛型代码内部,无法获得任何有关泛型参数类型的信息

    泛型限定边界:<T extends A>

    在基于擦除的实现中,泛型类型被当做第二类类型处理,即不能在某些重要的上下文环境中使用的类型。泛型类型只有在静态类型检查期间才出现,在此之后,程序中的所有泛型类型都将被擦除,替换为它们的非泛型上界。例如,诸如List<T>这样的类型注解将被擦除为List, 而普通的类型变量在未指定边界的情况下被擦除为Object


    边界

    <T extends A & I> :    extends多个,则class在前,interface在后


    通配符

    <? extends A>

    <? super B>

    <?>  无界通配符,意味着"任何事物"

    


本文出自 “小城运维” 博客,请务必保留此出处http://lixcto.blog.51cto.com/4834175/1918879

学习笔记第十五章javascript基础

第15章  JavaScript基础【学习重点】了解JavaScript基础知识熟悉常量和变量能够使用表达式和运算符正确使用语句能够掌握数据类型和转换的基本方法正确使用函数、对象、数组等核心知识和技法能够编写简单的脚本,解决... 查看详情

“全栈2019”java第十五章:unicode与转义字符

难度初级学习时间10分钟适合人群零基础开发语言Java开发环境JDKv11IntelliJIDEAv2018.3文章原文链接“全栈2019”Java第十五章:Unicode与转义字符下一章“全栈2019”Java第十六章:下划线在数字中的意义学习小组加入同步学习小组,共同... 查看详情

算法导论笔记——第十五章动态规划

...解组合起来。  动态规划(dynamicprogramming,表格法而非编程)用于子问题重叠的情况。四个步骤来 查看详情

《java编程思想》学习笔记——第十一章持有对象

    JAVA容器类类库的用途是"保存对象",并将其划分为两个不同的概念:    1)Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能用重复元... 查看详情

《java编程思想》学习笔记——第十四章类型信息

    运行时类型信息使得你可以在程序运行时发现和使用类型信息。    主要有两种方式:一种是"传统的"RTTI,它假定我们在编译时已经知道了所有的类型;另一种是"反射"机制,它允许我们在运行时发... 查看详情

《java编程思想》学习笔记——第十六章数组

    数组和其它种类的容器之间的区别有三方面:效率,类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快... 查看详情

第五章泛型

-.第23条在新代码中不要使用原生态类型  在代码中使用list虽然编译通过,但是在进行运行时会报ClassCastExpeption异常;如果在使用泛型时不知道什么类型可以使用通配符(只能包含某种未知对象类型的一个集合)如,Set<?>... 查看详情

《java编程思想》学习笔记——第十三章字符串

    String对象是不可变的。查看JDk文档你就会发现,String类每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则丝毫未动。+和StringBuilder&nbs... 查看详情

读书笔记-js高级程序设计-第十五章使用canvas绘图

读书笔记-js高级程序设计-第十三章事件 canvas具备绘图能力的2D上下文及文本API很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺乏必要的绘图驱动程序,则浏览器即使支持了也没用 ... 查看详情

《java编程思想》学习笔记——第十二章通过异常处理错误

  Java的基本理念是"结构不佳的代码不能运行"    发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决。这就需要错误... 查看详情

第十五章----容器和集合

容器(Collection) 数组是一种容器,集合也是一种容器 java编程中,装其他各种各样的对象(引用类型)的一种东西,叫容器 (图书馆里所有的书,要想管理图书馆里所有的书,就需要先把这些书放到一个东西里面,目前掌握的知识来说,只能... 查看详情

java(第十五章)

一、字符串类String1、String是一个类,位于java.lang包中2、创建一个字符串对象的2种方式:             String变量名=“值”;          查看详情

cprimerplus(第六版)第十五章编程练习答案(代码片段)

这次也是隔了好久,不过这本书一定要在十一月内搞完。--10.16CH15 Codeanswer1:#include<stdio.h>#include<string.h>intBin2Int(char*);intPow(int,int);intmain(void) char*pbin="01001001"; printf("T 查看详情

《风尚坐火箭学习vue》--第十五章:vue学习-补充cmd命令

...,独有vue占一半我是风尚,让我们一起坐火箭去学习Vue 第十五章:Vue学习-补充cmd命令上章回顾:风尚学会了吗?不会快去再做两遍!“啊?这不是有手就行啊?继续继续”风尚说。“好,再给... 查看详情

《java编程十五讲》第十五讲:容器框架三

#第十五讲 容器框架三我们到此已经把ArrayList、HashSet和HashMap讲过了。JDK里面还有一些实现,如Queue、Deque、TreeSet、TreeMap等,我就不一一讲了。现在回顾一下。Collection保存单一的元素,而Map把保存键值对。用泛型技术,就可以... 查看详情

[读书笔记]java编程思想(代码片段)

目录第1章对象导论第2章一切都是对象第3章操作符第4章控制执行流程第5章初始化与清理第6章访问权限控制第7章复用类第8章多态第9章接口第10章内部类第11章持有对象第12章通过异常处理错误第13章字符串第14章类型信息第15章泛... 查看详情

第十五章联结表

学习目标:了解什么是联结,为什么要使用联结,如何编写使用联结的SELECT语句。 联结:SQL最强大的功能之一就是能在数据检索查询的执行中联结(join)表。 关系表:关系表的设计就是要保证把信息分解成多个表,一类... 查看详情

c语言第十五章:linux系统

...sTorvalds于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发, 查看详情