前言

我一直认为泛型是编程语言设计中一个非常基本和重要的概念。Java中的泛型是什么?他们为什么在那里?他们是如何发展的?在学习基础知识时,对仿制药的透彻理解是非常重要的。因此,我阅读了《Java编程思想》的一般章节。不幸的是,我没有太多的经验,我已经看了好几次了。我们将来只能有学习的机会。但我也理解很多。以下是我对仿制药的理解和理解。如果有什么错误,我希望指出。

概念

来源:Java在设计开始之前不是通用的,直到它在JDK 1.5中被引入。Java泛型是通过擦除实现的。你知道什么是擦除吗?往下看。

概念:常规类和方法只能使用特定类型;基本类型或自定义类。如果要编写可应用于多种类型代码的代码,这种严格的限制将对代码施加很大的约束。泛型实现了参数化类型的概念,使代码能够应用于多个类型。当泛型在编程语言中出现时,它们的最初目的是希望类和方法具有广泛的表达能力。

简单的泛型

出现泛型有很多原因,其中最重要的一个原因是创建容器类。我们暂时不指定类型,但决定以后使用什么类型。为了实现这一目标,需要在类名后面使用类型参数,用尖括号括起来。然后,当使用此类时,将用实际类型替换此类型的参数。在下面的示例中,t是类型参数。代码如下:

然而,在许多源代码中,一些泛型类具有多个泛型参数,例如Java。UTIL功能。双功能,有三种类型的参数t,u,r。

泛型方法

泛型方法使方法独立于类。在编写通用代码时,基本的指导原则是尽可能使用通用方法。这意味着,如果可以对整个类使用泛型方法而不是泛型方法,那么可以使用泛型方法,因为它们可以使事情更清楚。此外,对于静态方法,不能访问泛型类的类型参数,因此如果静态方法需要使用泛化功能,则必须将它们变为泛型方法。

泛型的擦除

当我读了Java编程思想的一般章节中的“被删除的奥秘”部分时,我特别头晕,然后当我向下看时,我变得越来越困惑。尤其是当你看边界和通配符的时候,它有点令人困惑。首先看看什么是擦除。在泛型代码中,有关泛型参数类型的信息不可用。Java泛型是通过擦除实现的,这意味着当使用泛型时,任何特定的类型都会被擦除,而您所知道的唯一一件事就是使用对象。由于Java最初没有引入泛型,所以它被设计成与旧版本的JDK兼容。ErAcess是Java通用实现之间的折衷。因此,当您运行时,list<string>与list<integer>相同。请注意,它正在运行,但在编译时,list<string>表示此字符串类型的列表容器,list<integer>表示当前整数类型的列表容器。例如,来自Java编程思想的例子。

泛型的边界

Java中的泛型,当编译时,T表示一种类型,如果没有指定边界,它就等于对象。我们可以使用extends关键字为泛型指定边界。为了能够调用f(),我们可以在给定泛型类边界的情况下帮助泛型类,告诉编译器必须接受边界后面的类型。这里使用扩展关键字。将上述代码更改为

总结

对于 ? extends Class ,? extends T,? super T,不是很理解的,可以自己把例子写一下,然后想一想。Java 泛型的特性在很多开源的框架上是用的非常多的。这快需要深入的理解一下,我想随着敲代码的年限上,应该到了后面会有不一样得理解吧。现在通过书上能够知道,理解得就只有这么多了。

Java泛型知识点全方位总结的更多相关文章

  1. Java泛型知识点:泛型类、泛型接口和泛型方法

    有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类. 泛型类 容器类应该算得上最具重用性的类库之一.先来看一个没有泛型的情况下的容器类如何定义: public class Cont ...

  2. 18.Java泛型

    1.为什么需要泛型 List list1=new ArrayList(Arrays.asList(new String("string"),new Integer(20))); S ...

  3. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. Java基础知识点总结

    前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...

  5. JAVA基础知识点总结(全集)

    1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...

  6. Java泛型概述

    泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除. 泛型基础 泛型类 我们首先定义 ...

  7. Java泛型详解(转)

    文章转自  importNew:Java 泛型详解 引言 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理 ...

  8. java类型系统知识点总结

    下面的东西是在一天内用了三个编辑器写的,所以风格有点不太统一 一:下午完成 主要看了java的类型系统,具体如下. 1)接口 作为又一个引用类型,接口可以说是一种特殊的类,可以有属性和行为(字段和方法 ...

  9. 第11讲-Java泛型和文件操作

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1.泛型 1.2.2.文件操作 2.具体内容 2.1.Java泛型 2.1.1.为什么需要泛型 我们发现在List中,底层是Object[ ]数 ...

随机推荐

  1. 数组中&a与&a[0]的区别 转载自http://blog.csdn.net/FX677588/article/details/74857473

    在探讨这个问题之前,我们首先来看一道笔试题,如下: [摘自牛客网]下列代码的结果是:(正确答案是 C) main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)( ...

  2. 基于layer简单的弹层封装

    /** * 产生长度为32的Guid字符串 */ function getGuid32() { var rt_str = String.fromCharCode(65 + Math.floor(Mat ...

  3. 移动端根元素(html)的设置

    1.通过js设置 <script> document.documentElement.style.fontSize = document.documentElement.clientWid ...

  4. Java中Reflect的基本使用

    首先在package reflect下定义了一个类Book package reflect; class Book{ private String title; private double pric ...

  5. CodeForces 456-C Boredom

    题目链接:CodeForces -456C Description Alex doesn't like boredom. That's why whenever he gets bored, he c ...

  6. 细说python类2——类动态添加方法和slots(转)

    先说一下类添加属性方法和实例添加属性和方法的区别, 类添加属性属于加了一个以类为全局的属性(据说叫静态属性),那么以后类的每一个实例化,都具有这个属性.给类加一个方法也如此,以后类的每一个实例化都具备 ...

  7. D. Cutting Out 二分

    题意是给你n个数字的序列,让你从中找含k个数字的序列,要求这k个数字要尽可能多次的从n个数字的序列中减去. 解法就是从1到n,二分查找可以删除的最大次数. http://codeforces.com/ ...

  8. 元数据管理器中存在错误。 实例化来自文件“\\?\C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Data\Tfs_Analysis.0.db\vDimTestCaseOverlay.874.dim.xml”的元数据对象时出错。

    一.发现问题 启动SQLSERVER的数据分析服务失败 查看系统日志错误如下: 双击错误后显示详细错误: 元数据管理器中存在错误. 实例化来自文件“\\?\C:\Program Files\Micro ...

  9. python测试开发django-55.xadmin使用markdown文档编辑器(django-mdeditor)

    前言 markdown是一个非常好的编辑器,用过的都说好,如果搭建一个博客平台的话,需要在后台做文章编辑,可以整合一个markdown的文本编辑器. github上关于django的markdown插 ...

  10. 用distinct or array_unique

    在 Mysql 获取数据时,如果想获取某一列去重数据,如果获取呢 举个例子: advert_pro_ad 表 CREATE TABLE `advert_pro_ad` ( `advert_id` ) ...