【Java】韩顺平Java学习笔记 第15章 泛型

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测 阅读详情

第15章 泛型

泛型引入

  • 遍历 ArrayList 数组时存在的问题:

    1. 不能对加入到集合 ArrayList 中的数据类型进行约束(不安全),如果 ArrayList 中混入了其他类型的数据,遍历时会抛出异常
    2. 遍历的时候需要进行类型转换(向下转型),如果数据量大,效率较低
  • 泛型写法示例

    ArrayList<Dog> arrayList = new ArrayList<Dog>

    把Dog指定给ArrayList<E> 中的 E , E 即为泛型

    表示存放到ArrayList集合中的元素是Dog类型(提高安全性),遍历时可以直接遍历而不用转换(提高效率)

  • 类似 C++ 的模板

泛型说明

  • 可以广泛地表示数据类型,是jdk5出现的新特性,解决数据类型安全性问题
  • 想看具体是什么类型时,可以用 getClass( ) 方法
  • 在类声明的时候使用泛型,具体的数据类型在**定义(实例化)**一个新的对象时决定,即在编译时就确定E是什么类型
  • 保证程序在编译时不发出警告,运行时不产生ClassCastException异常(类型转换异常),代码更简洁
  • 泛型指定的只能是类,不能指定基本数据类型如 int、double,只能指定其包装类 Integer 、Double

泛型语法

泛型声明

class Person <K,V>

interface Person <T>

  • T、K、V代表类型
  • 任何字母都可以,常用T(Type)

泛型使用

List<String> strList = new ArrayList<String> ();

Iterator<Customer> iterator = customer.iterator();

泛型使用细节

  • T和E只能是引用类型(如Integer),不能是基本数据类型(如int)

  • 指定泛型的具体类型后,可以传入该具体类型或其子类类型

  • 泛型使用形式

    1. 传统形式(见上)

    2. 简化形式:List<String> strList = new ArrayList<> ();(推荐写法)

      编译器会进行自动类型推断

  • 如果实例化对象时不写泛型,默认泛型是 Object

自定义泛型类

  • 自定义泛型类是自己写的带泛型的类

  • 语法:

    class Tiger<T,R,M>{}	//标识符可以有多个
    
  • 普通成员(属性,方法)可以使用泛型

  • 使用泛型的数组,不能初始化(不能在类内 new,但是可以在类内new一个HashMap,因为这时并没有创建空间,HashMap只有在添加Node节点时才会创建空间),因为不确定类型,不知道开辟多大空间

  • 静态方法和静态属性不能使用类的泛型,因为静态和类相关,在类加载时对象还没有创建,而泛型在创建对象时才会确定

自定义泛型接口

  • 语法

    interface tiger <T,R,...>{}
    
  • 静态成员也不能使用泛型

  • 泛型的确定在实现接口方法(继承时不指定,默认指定为Object) 或继承接口时(当我们在实现接口时,因为继承时已经指定类型,这时重写接口方法时,泛型已经被自动指定)

  • 默认泛型为Object

自定义泛型方法

  • 语法

    public <T,R> void func(T t, R r){
    
    }
    
  • 可以定义在普通类中,也可以定义在泛型类中

  • 泛型方法被调用时,类型会确定。调用方法时传入参数,编译器会自动确定类型(注:传入 int 等基本数据类型时会自动装箱为 Integer 等

  • public void hi ( E e ) hi方法不是泛型方法,而是使用了类声明的泛型

  • 泛型方法可以使用类声明的泛型,也可以使用自己的泛型

泛型的继承性和通配符

  • 泛型没有继承

    Object o = new String("xx"); //可以

    List < Object > list = new ArratList < String > //不可以

  • 通配符(以下代码为其做方法参数时)

    1. List <?> c 表示可以接受任意的泛型类型
    2. List < ? extends AA > c 表示上限,可以接受 AA 或者 AA 的子类
    3. List < ? super AA > c 表示下限,可以接受 AA 或者 AA 的父类

JUnit

  • 作用是测试代码功能

  • 是一个 Java 语言的单元测试框架

  • 传统测试方法的方式是写一个main函数,再创建对象、调用方法、运行程序,过程稍显麻烦,并且如果要测试其它方法,之前的代码还可能会注释掉

  • JUnit 测试框架可以让用户直接运行或Debug这个方法

  • 使用方法:在定义的方法前写注解@Test即可,注意**第一次写的时候需要按 Alt + Enter 来导入JUnit 5.8.1

    class AA{
         @Test
        public void f1(){
            System.out.println("111");
        }
    
        @Test
        public void f2(){
            System.out.println("222");
        }
    }
    
【推荐100个unity插件】制作美丽 Unity 景观,增强Terrain材质表现的插件——GTS GTS地形着色器是一款专为Unity设计的强大工具,可解决地形纹理绘制和光照处理的难题。它提供一键式配置,支持实时调整地形效果,包含细节注入、高度混合、雪注入等核心功能,并兼容网格地形和低多边形模型。插件完美集成Gaia天气系统,支持HDRP细分效果。安装后通过GTS管理器创建配置文件并应用到地形,即可快速生成高质量地形渲染。其模块化设计包含全局设置、网格转换和细节调整等面板,使开发者能灵活控制地形表现,显著提升视觉效果与性能表现。 阅读详情

相关推荐

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2193

韩顺平 2021零基础学Java 学习笔记(3)(自用)

目录第 14 章 集合 第 14 章 集合 14.1 集合的理解和好处 14.2 集合的框架体系 Java 的集合类很多,主要分为两大类,如图 : 14.3 Collection 接口和常用方法 14.3.1 Collection 接口实现类的特点 package com.hspedu.collection_; import java.util.ArrayList; import java.util.List; public class CollectionMethod { @Supp

weixin_43973189的博客 1万+

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1118

第 15 章 泛型

Java学习笔记(韩顺平)

1 兴趣 2 实践 982

机器学习第四个算法ANN(人工神经网络)

我是在14年9月刚读研的时候听到一个说法叫“类人脑算法”很火热,之后搞了很长一段时间相关的蓄水池算法等,但大都没有摸到门路而中途放弃了。现今看来,还是缺少一些知识背景,也不善于在网络上学习,随时间推移,也逐渐明白这是机器学习的一小部分,并且逐渐发展的名称叫做人工神经网络的算法,如果网络层较多,又会有个别名,叫做深度学习。其中个用到的最著名的算法是背向传输算法(backpropagation),而这个

legalhighhigh的博客 1万+

基于FLUENT的圆柱绕流数值模拟与流场优化策略

本文详细介绍了基于FLUENT的圆柱绕流数值模拟方法与流场优化策略。从基础概念、建模技巧到湍流模型选择,全面解析了圆柱绕流模拟的关键技术,并提供了实用的网格划分和参数设置建议。通过具体案例展示了流动控制方法和优化流程,帮助工程师有效降低阻力系数,提升流场性能。

f6g7h8i9j的博客 705

韩顺平Java-第十五章:泛型

泛型的使用

weixin_47199727的博客 1149

python 爬取携程全国旅游景点信息-2024.4.13

携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假、商旅管理等服务。携程网上有大量的旅游景点和酒店信息,这些信息对于旅行者和旅游业者都有很大的价值。通过爬虫技术,我们可以从携程网上获取这些信息,并进行数据清洗、数据分析、数据可视化等操作,从而得到有用的洞察和建议。

britlee的博客 1万+

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.3 泛型介绍 && 15.4 泛型的语法

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.3 泛型介绍 && 15.4 泛型的语法

代码改变世界 480

VisionMaster4.2.0与C#控件开发实战:从入门到精通的完整指南

本文详细介绍了VisionMaster4.2.0与C#控件开发的实战指南,从基础环境搭建到核心控件使用,再到高级功能实现。通过VmFrontendControl、VmGlobalToolControl等核心控件的深入解析,帮助开发者快速掌握机器视觉应用开发技巧,提升开发效率。特别适合需要集成VisionMaster4.2.0 SDK进行视觉系统开发的C#程序员。

weixin_42665725的博客 383

华为OD机试双机位C卷-简单的解压缩算法(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【简单的解压缩算法】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD真题【简单的解压缩算法】。

qq_45776114的博客 474

Java笔记(韩顺平Java基础15-20章)

案例(传统方式解决): 结果: 程序出现类型转换的错误 泛型的好处 泛型介绍 案例: 泛型的语法 泛型的声明 泛型的实例化 泛型使用的注意事项和细节 代码实现:main方法: MyDate类 Employee类 自定义泛型 自定义泛型类(难度) 演示案例: 自定义泛型方法 演示案例: 泛型的继承和通配符 泛型的继承和通配符说明 JUnit 为什么需要JUint 基本介绍游戏演示 为什么写这个项目 写项目前的提醒 坐标体系-介绍 坐标体系-像素 介绍-快速入门(java绘图技术原理)√

jinghaize的博客 638

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 905

Java SE : 第15章 泛型

本文章内容来自韩顺平老师的课堂笔记的 第15章 泛型,重点学习:泛型类型、泛型接口、泛型方法。

weixin_48409574的博客 220

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

韩顺平教育java高级课程

如何实现“韩顺平教育java高级课程” 作为一名经验丰富的开发者,我很高兴能够帮助刚入行的小白实现“韩顺平教育java高级课程”。在这个过程中,我会详细介绍整个实现流程,并提供代码示例和注释,以确保你能够理解并掌握每个步骤。 实现流程 首先,让我们通过一个表格来了解实现“韩顺平教育java高级课程”的整个流程: 步骤...

weixin_41574285的博客 867

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.1 && 15.2 泛型的理解和好处

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.1 && 15.2 泛型的理解和好处

代码改变世界 212

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.6 自定义泛型

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.6 自定义泛型

代码改变世界 369

韩顺平Java笔记(自用4)

第13章 常用类 第14章 集合 第15章 泛型 第13章 常用类 13.1 包装类 基本数据类型所对应的引用数据类型 Object 可统一所有数据,包装类的默认值是null 13.1.1 类型转换与装箱、拆箱 8种包装类提供不用类型间的转换方式 Number父类中提供的6个共性方法 2. parseXXX( )静态方法 3. valueOf( )静态方法 注意:需保证类型兼容,否则抛出NumberFormatException异常 psvm(String[...

qq_44235936的博客 1703

韩顺平 2021零基础学Java 学习笔记(1)(自用)

目录第 2 章 Java 概述第 3 章 变量第 4 章 运算符第 5 章 程序控制结构第 6 章 数组、排序和查找第 7 章 面向对象编程(基础部分)第 8 章 面向对象编程(中级部分) 第 2 章 Java 概述 2.1 Java 重要特点 Java 语言是面向对象的(oop) Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证 Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台] Jav

weixin_43973189的博客 4万+

韩顺平java课件资料

如何实现“韩顺平Java课件资料” 在学习Java的过程中,有许多优秀的学习资源和课件可供参考,而“韩顺平Java课件资料”就是其中比较受欢迎的一种。本文将为你详细解析如何获取和实现这些课件资料。我们将采用简单易懂的方式,结合代码示例,帮助你迅速上手。 整体流程概述 以下是实现“韩顺平Java课件资料”的基本步骤: ...

weixin_42135073的博客 244

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.7 泛型的继承和通配符

非零基础自学Java (老师:韩顺平) 第15章 泛型 15.7 泛型的继承和通配符

代码改变世界 421

【韩顺平Java笔记】第2章:Java概述

程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,举例说明:计算机程序执行过程://1+1程序System.out.println("结果=" + res);将上述代码保存到Test.java后,进入CMD,第一步,先使用javac命令编译一下,生成Test.class文件然后输入java Test,按回车就可以执行Java语言的特点:跨平台性做解释工作的执行工作的是JVM(Java虚拟机),不同的操作系统其对应的JVM是不一样的,JVM是包含在JDK中的。

随手写写 1488

JavaSE——第15章 泛型

JavaSE——第15章 泛型

代码改变世界 410

循序渐进学Java笔记(Chapter15_泛型)

本文介绍了Java泛型的基本概念和使用方法。泛型作为JDK5引入的特性,主要解决数据类型安全性问题,通过参数化类型实现对集合元素的类型约束。文章从泛型引入案例出发,分析了传统方法的不足(类型不安全、效率低),并详细说明了泛型的三大优势:编译时类型检查、减少类型转换、消除编译警告。内容涵盖泛型声明与实例化、泛型类和接口的定义、泛型方法的使用,以及类型参数T、E等的含义。通过Employee排序等实际案例演示了泛型的应用场景,并总结了泛型使用中的注意事项,如引用类型限制、初始化规则等。 写于2024/04/22

ZZHow Blog 1201

java笔记-韩顺平

感觉跟向上转型有点像interface 接口名{//属性//方法(1、抽象方法。2、默认实现方法 3、静态方法)class 类名 implements 接口{自己属性;自己方法;必须实现的接口的抽象方法1、在jdk7.0接口里的所有方法都没有方法体,都是抽象方法2、jdk8.0后接口可以有静态方法,默认方法,即接口中可以有方法的具体实现//在接口中,抽象方法可以省略abstract关键字//default修饰的默认实现//static 修饰的静态方法。

Haya_7的博客 1106

韩顺平Java笔记精华版【自用 持续更新】

韩顺平Java笔记精华版,自用

Tiny_124的博客 361
上一篇: 【LeetCode 刷题笔记】链表 哈希表(15-29)
下一篇: 【Java】韩顺平Java学习笔记 第16章 坦克大战
COTAS
博客等级 码龄7年 369粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值