当前位置: 首页 > news >正文

反射、枚举和lambda表达式

文章目录

  • 一、反射
    • 1.1 什么是反射
    • 1.2 反射相关的类
    • 1.3 示例
      • 获取Class对象
      • 通过反射去创建对象
      • 调用带两个参数且私有的构造方法
      • 获取私有属性
      • 反射私有方法
  • 二、枚举
    • 2.1 什么是枚举以及其优缺点
    • 2.2 如何使用枚举
      • 组织常量的基本方法
      • 枚举类的其他方法示例
      • 枚举能否通过反射拿到实例对象
  • 三、lambda表达式
    • 3.1 什么是 lambda表达式
    • 3.2 lambda表达式的基本使用
      • 关于变量捕获
      • 对于自定义函数式接口
      • lambda表达式在集合中的使用

一、反射

1.1 什么是反射

  1. 概念:正常情况下,我们的类是封装起来的,外人除非创建对象,否则无法访问到。但是反射可以让我们知道这个类的所有属性方法以及对于任意一个对象,都能调用它的任意方法和属性
    • 是一种特性,和数据结构没有关系

1.2 反射相关的类

  1. :Class类、File类、Method类、Constructor类
    • Class类:表示类和接口
      • 理解:程序编译之后会变成“Class字节码文件”,然后交给JVM运行,JVM里面都是对象,Class字节码文件也因此会被加载为一个对象,该对象就是我们获取的Class对象,拿到Class对象就可以进行正常的反射了
    • File类:表示类的成员变量/属性
    • Method类:表示类的方法
    • Constructor类:表示类的构造方法
  2. 相关方法

1.3 示例

获取Class对象

在这里插入图片描述

通过反射去创建对象

在这里插入图片描述

调用带两个参数且私有的构造方法

在这里插入图片描述

获取私有属性

在这里插入图片描述

反射私有方法

在这里插入图片描述

二、枚举

2.1 什么是枚举以及其优缺点

  1. 概念:枚举是在 JDK1.5以后引入,可以帮我们组织常量
  2. 优缺点
    • 优点
      • 枚举常量更简单安全,避免把其他的常量值认为是枚举类型
      • 枚举里面有内置方法,使用起来更规范美观
      • 枚举可以避免反射和序列化问题,因为其能创造出的实例只有一个,所以使用单例模式的时候是安全的
    • 缺点
      • 因为枚举类型的构造方法默认是私有的,所以无法继承,无法扩展,就算继承了也没有什么用

2.2 如何使用枚举

组织常量的基本方法

在这里插入图片描述
在这里插入图片描述

枚举类的其他方法示例

在这里插入图片描述

枚举能否通过反射拿到实例对象

在这里插入图片描述
在这里插入图片描述

三、lambda表达式

3.1 什么是 lambda表达式

  1. 概念:是Java8中一个重要的新特性,允许通过表达式来代替功能接口,有点类似于【匿名表达式】
    • 表达式形式:有一个正常的参数列表 + 使用这些参数的主体(body,可以是一个表达式或一个代码块)
  2. 基本语法
    在这里插入图片描述

3.2 lambda表达式的基本使用

关于变量捕获

  1. 概念:lambda表达式和匿名内部类都存在变量捕获,这可以帮我们理解其作用域

在这里插入图片描述

对于自定义函数式接口

在这里插入图片描述

lambda表达式在集合中的使用

  1. 集合中可以使用lambda表达式
    • Collection:removeIf()、spliterator()、stream()、parallelStream()、forEach()
    • List:replaceAll()、sort()
    • Map:getOrDefault()、forEach()、replaceAll()、putIfAbsent()、remove()、computerIfAbsent()、computeIfPresent()、computer()、merge()

在这里插入图片描述
2. forEach()
在这里插入图片描述
在这里插入图片描述
3. sort()
在这里插入图片描述

相关文章:

反射、枚举和lambda表达式

文章目录 一、反射1.1 什么是反射1.2 反射相关的类1.3 示例获取Class对象通过反射去创建对象调用带两个参数且私有的构造方法获取私有属性反射私有方法 二、枚举2.1 什么是枚举以及其优缺点2.2 如何使用枚举组织常量的基本方法枚举类的其他方法示例枚举能否通过反射拿到实例对象…...

Stable Diffusion Web UI 1.9.4常用插件扩展-WD14-tagger

Stable Diffusion Web UI 1.9.4 运行在 WSL 中的 Docker 容器中 tagger 插件的作用是,上传一张图片,反推这张图片可能的提示词。 使用场景就是,想要得到类似的图片内容时使用。 WD14-tagger 安装 Stable Diffusion WebUI WD14-tagger GitH…...

java 第19天 Lambda、jdk8.0新方法、Optional

一.Lambda表达式 前提是:参数是函数式接口才可以书写Lambda表达式 函数式接口条件: 1.接口 2.只有一个抽象方法 lambda表达式又称为匿名函数,允许匿名函数以参数的形式传入方法,简化代码 lambda表达式分为两部分()->{} …...

江协科技STM32学习- P31 I2C通信协议

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…...

6、liunx目录的功能

一、目录简介 Linux主要树结构目录包括:/、/root、/home、/usr、/bin、/tmp、/sbin、/proc、/boot 【Linux系统中常见目录功能如下】 / 根目录;/bin 存放必要的命令;(普通用户) /boot 存放内核以及启动所需的文件&…...

挑战Java面试题复习第5天,无人扶我青云志

挑战第 5 天 java反射List Set Map 区别Object 常用方法 java反射 定义: 运行时动态获取类信息和调用方法的特性。 应用场景: JDBC数据库连接。框架如Hibernate和Struts等。 实现方式: 通过四种方法获取Class对象: Class.fo…...

大规模语言模型:从理论到实践(1)

1、绪论 大规模语言模型(Large Language Models,LLM)是由包含数百亿以上参数的深度神经网络构建的语言模型,采用自监督学习方法通过大量无标注文本进行训练。自2018年以来,多个公司和研究机构相继发布了多种模型&#…...

C#如何锁定和解除鼠标及键盘BlockInput

在C#中,"BlockInput"通常指的是一个功能或方法,用于阻止或暂停用户输入一段时间。这在某些特定的应用场景下非常有用,比如在游戏中防止玩家连续快速点击导致游戏逻辑错误,或者在UI应用中防止用户在某个操作正在进行时进…...

Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!

在人工智能的图像生成领域,我们刚刚迎来了一位新的明星——Stable Diffusion 3.5。这是一款由多模态扩散Transformer(MMDiT)驱动的文本到图像模型,它在图像质量、字体处理、复杂提示理解以及资源效率方面都实现了显著提升。今天&a…...

MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题

1. limit 100000,10 和 limit 10区别 LIMIT 100000, 10: 这个语句的意思是,从查询结果中跳过前100000条记录,然后返回接下来的10条记录。这通常用于分页查询中,当你需要跳过大量的记录以获取后续的记录时。例如,如果你…...

RabbitMQ 实现消息队列负载均衡

在现代应用程序中,消息队列是一种重要的架构模式,用于解耦服务、处理异步任务和实现负载均衡。其中,RabbitMQ是一个广泛使用的开源消息代理,提供了高可用性、可靠性和灵活性。本文将展示如何使用Python及其pika库来实现RabbitMQ&a…...

嵌入式linux中HTTP协议原理基本分析

第一:HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维…...

thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql

最近接了一个陪玩小程序,其中有一个实时聊天的项目,需要搭建Websocke服务,通过多方考虑选择了通过GatewayWorker框架(基于Workerman),将代码提取了出来,用到的框架封装到了vendor目录下,完整前后…...

浅谈射频应用

射频(Radio Frequency,缩写为RF)是一种高频交流变化电磁波的简称,其频率范围广泛,从几十千赫兹跨越至几百吉赫兹。射频技术在多个领域有着广泛的应用: 1、通信领域:射频技术是现代通信领域的重要…...

SAP(PP生产制造)拆解工单业务处理

1、BOM维护 要拆解的成品或半成品要和原成品、半成品BOM一致 2、创建拆解工单 CO01选择拆解工单的类型,以及填写拆解的物料和拆解工厂 维护工单组件 注意: 1、拆解入库组件的数量需要维护为负数 2、拆解工单投料组件数量维护为正数 3、拆解工单收发…...

《Python游戏编程入门》注-第4章2

《Python游戏编程入门》的“4.2.2 键盘事件”中介绍了通过键盘事件来监听键盘按键的方法。 1 键盘事件 玩家点击键盘中某个按键实际上包含了两个动作:点击按键和释放按键,也就是按键按下和松开。按键按下的对应的事件是KEYDOWN,按键松开对应…...

deque

deque 底层数据结构 动态开辟的二维数组第一维数组中存放的是第二维数组的指针每个第二维数组大小为512字节。假如存放的是**_Tp类型,每个第二维数组存放512/(sizeof(_Tp**))个元素按照第一维数组大小二倍进行扩容 举例 当deque进行push_back,将下半部分空间元素…...

YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新

一、本文介绍 本文记录的是利用Strip Pooling模块优化YOLOv11的目标检测网络模型。Strip Pooling结合了长而窄的卷积核形状在一个空间维度上的长程关系捕捉能力和在另一个空间维度上的局部细节捕捉能力,有效地处理复杂的场景信息。这一机制通过采用 1 N 1N 1N或 N 1 N1 N1的…...

yt-dlp下载视频

插件官方下载地址 通过以下命令行使用 yt-dlp下载 (base) D:\tool\video>cd D:\tool\video (base) PS D:\tool\video> .\vdownlod.bat 此处输入链接或者(base) D:\tool\video>yt-dlp -f bv[extmp4]ba[extm4a] --cookies d:\Downloads\www.youtube.com_cookies.txt -…...

oracle insert忽略主键冲突,忽略重复记录

在INSERT语句中使用IGNORE_ROW_ON_DUPKEY_INDEX提示: INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name, index_name) */ INTO table_name(column1, column2) VALUES(value1, value2); 或 INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name(column_name)) */ …...

基于三菱PLC农田灌溉及MCGS组态智能灌溉系统说明双万字

基于三菱PLC农田灌溉 包含说明一万 和MCGS组态农田智能灌溉系统说明一万前阵子回豫东老家帮我叔打理那三亩秋月梨果园,那浇地给我整得怀疑人生——三伏天顶着三十七八度的太阳,扛着铁锹跑遍地头开电磁阀,中午热得头晕就算了,晚上还…...

【深度验证】ArcGIS Band Collection Statistics相关性分析结果偏差的根源探究

1. 当GIS分析结果与统计软件不一致时 最近在做一个遥感数据分析项目时,我遇到了一个奇怪的现象:同样的数据集,在ArcGIS中使用Band Collection Statistics工具计算出的皮尔逊相关系数,与在Excel和R中计算的结果存在明显差异。起初我…...

Docker下Kong+Konga全栈部署避坑指南(附PostgreSQL 9.6配置)

Docker环境下Kong与Konga全栈部署实战指南 引言 在现代微服务架构中,API网关扮演着流量调度与安全管控的关键角色。Kong作为开源API网关的标杆产品,凭借其插件化架构和强大性能,已成为企业级API管理的首选方案。而Konga作为Kong的图形化管理…...

智能处理与开源工具:突破传统背景抠图限制的实时解决方案

智能处理与开源工具:突破传统背景抠图限制的实时解决方案 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https…...

别再问怎么给QQ机器人加功能了!手把手教你用Nonebot2写一个天气查询插件(附完整代码)

NoneBot2实战:从零构建智能QQ机器人天气查询插件 在当今即时通讯生态中,智能机器人已成为提升社群互动效率的利器。本文将深入探讨如何基于Python的NoneBot2框架,为QQ机器人开发一个功能完备的天气查询插件。不同于基础教程,我们聚…...

J1712-粒状巧克力糖包装机设计【颗粒状糖果包装机设计】【三维SW模型+6张CAD图纸+说明】

J1712-粒状巧克力糖包装机设计【颗粒状糖果包装机设计】【三维SW模型6张CAD图纸说明】 传送带电机刚启动那会儿,总有几个巧克力豆卡在导流槽边缘。凌晨三点的实验室里,我盯着SolidWorks里旋转的螺旋送料机构模型,突然意识到——这玩意儿得做成…...

手把手教你用SAM2和LoRA:基于CVPR25新思路的开放词汇分割实战(附代码)

手把手教你用SAM2和LoRA:基于CVPR25新思路的开放词汇分割实战(附代码) 开放词汇语义分割(Open-Vocabulary Semantic Segmentation)正成为计算机视觉领域的热点方向。传统语义分割模型受限于预定义的封闭类别&#xff…...

用STM32F103C8T6和F9P模组DIY一台RTK无人车:从蓝牙遥控到自主导航的保姆级教程

用STM32F103C8T6和F9P模组打造高精度RTK无人车:从零构建到自主导航全流程解析 在创客圈子里,能够自主导航的智能小车一直是热门项目。但传统基于普通GPS的方案定位精度往往在米级徘徊,难以实现真正的精准控制。而将RTK(实时动态定…...

从idea ai插件到在线原型:用快马平台快速构建你的智能代码生成器

最近在开发中频繁使用IDEA的AI插件辅助编码,发现这类工具能大幅减少重复劳动。但插件功能往往局限于当前IDE环境,于是萌生了一个想法:能否把这种智能生成能力搬到线上,做成一个轻量级的Web工具?经过在InsCode(快马)平台…...

告别云端:在百元ESP32-S3上实现离线婴儿哭声识别,隐私与实时性我全都要

边缘智能革命:用ESP32-S3打造零隐私风险的婴儿监护终端 当科技与育儿需求碰撞,我们面临一个核心矛盾:如何在不牺牲隐私的前提下实现智能化监护?传统方案依赖云端处理,却让敏感数据暴露在传输与存储环节。本文将揭示一种…...