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

【Java】内部类、枚举、泛型

目录

  • 1.内部类
    • 1.1概述
    • 1.2分类
    • 1.3匿名内部类(重点)
  • 2.枚举
    • 2.1一般枚举
    • 2.2抽象枚举
    • 2.3应用1:用枚举写单例
    • 2.4应用2:标识常量
  • 3.泛型
    • 3.1泛型认识
    • 3.2泛型原理
    • 3.3泛型的定义
      • 泛型类
      • 泛型接口
      • 泛型方法
    • 3.4泛型的注意事项

1.内部类

1.1概述

内部类:指一个完全被定义在另一个类中的类。
是类中的五大成分之一,成员变量、方法、构造器、内部类、代码块。

我们一般在一个事物完全包含另一个事物,且该事物没有必要单独设计类时使用内部类。
在这里插入图片描述

1.2分类

内部类有四种形式,可分为以下四种类型:

  • 成员内部类
    在这里插入图片描述

  • 静态内部类:有static修饰的内部类,属于类而非对象
    在这里插入图片描述

  • 局部内部类:定义在方法中、代码块中、构造方法体中的类
    在这里插入图片描述

  • 匿名内部类(重点):特殊的局部内部类。

1.3匿名内部类(重点)

以前的写法: 在这里插入图片描述
引入匿名内部类后:更加方便的创建子类对象。
在这里插入图片描述
匿名内部类是类的证明:
在这里插入图片描述
应用1:
在这里插入图片描述
应用2:匿名内部类直接作为一个参数来使用。
应用3:作为一个便捷对象参数传过去
在这里插入图片描述

代码:

package d1;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Test {public static void main(String[] args) {JFrame win = new JFrame();JPanel panel = new JPanel();win.add(panel);JButton btn = new JButton("登录");panel.add(btn);btn.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(win,"登录成功!");}});win.setSize(500,500);win.setLocationRelativeTo(null);win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);win.setVisible(true);}
}

2.枚举

枚举:枚举是一种特殊的类,特殊在固定数量的类。
语法格式:
在这里插入图片描述

2.1一般枚举

枚举类的说明:
在这里插入图片描述
在这里插入图片描述
反编译:
在这里插入图片描述

2.2抽象枚举

在这里插入图片描述

2.3应用1:用枚举写单例

在这里插入图片描述

2.4应用2:标识常量

在这里插入图片描述

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

3.泛型

3.1泛型认识

定义类、方法、接口时,同时声明了多个类型变量,成为泛型类、泛型方法、泛型接口。
ArrayList的泛型:
在这里插入图片描述
没有使用泛型的ArrayList:
在这里插入图片描述
使用泛型的ArrayList:
在这里插入图片描述

3.2泛型原理

在这里插入图片描述

3.3泛型的定义

泛型类

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

泛型接口

在这里插入图片描述

泛型方法

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

拓展:泛型的上下限:

  • 泛型上限: ? extends Car : ?能接受的必须是Car或者其子类
  • 泛型下限: ? super Car : ?能接受的必须是Car或者其父类

3.4泛型的注意事项

  • 泛型擦除
    泛型是在编译阶段存在的,一旦程序被编译成了class文件,class文件中就不存在泛型了。
    在这里插入图片描述

  • 泛型不支持基本数据类型,只支持对象类型(引用数据类型)。
    在这里插入图片描述


EOF

相关文章:

【Java】内部类、枚举、泛型

目录 1.内部类1.1概述1.2分类1.3匿名内部类(重点) 2.枚举2.1一般枚举2.2抽象枚举2.3应用1:用枚举写单例2.4应用2:标识常量 3.泛型3.1泛型认识3.2泛型原理3.3泛型的定义泛型类泛型接口泛型方法 3.4泛型的注意事项 1.内部类 1.1概述 内部类:指…...

LabVIEW电子类实验虚拟仿真系统

开发了基于LabVIEW开发的电子类实验虚拟仿真实验系统。该系统通过图形化编程方式,实现了复杂电子实验操作的虚拟化,不仅提高了学生的操作熟练度和学习兴趣,而且通过智能评价模块提供即时反馈,促进教学和学习的互动。 项目背景 在…...

SVM支持向量机

SVM的由来和概念 间隔最大化是找最近的那个点的距离’ 之前我们学习的都是线性超平面,现在我们要将超平面变成圈 对于非线性问题升维来解决 对于下图很难处理,我们可以将棍子立起来,然后说不定red跑到左边了,green跑到右边了(可能增加了某种筛选条件导致两个豆子分离)(只是一种…...

【Unity】RPG2D龙城纷争(二)关卡、地块

更新日期:2024年6月12日。 项目源码:后续章节发布 索引 简介地块(Block)一、定义地块类二、地块类型三、地块渲染四、地块索引 关卡(Level)一、定义关卡类二、关卡基础属性三、地块集合四、关卡初始化五、关…...

mediamtx流媒体服务器测试

MediaMTX简介 在web页面中直接播放rtsp视频流,重点推荐:mediamtx,不仅仅是rtsp-CSDN博客 mediamtx github MediaMTX(以前的rtsp-simple-server)是一个现成的和零依赖的实时媒体服务器和媒体代理,允许发布,读取&…...

C# 循环

C# 循环 在编程中,循环是一种控制结构,它允许我们重复执行一段代码多次。C# 提供了几种循环机制,以适应不同的编程需求。本文将详细介绍 C# 中常用的几种循环类型,包括 for 循环、while 循环、do-while 循环和 foreach 循环&…...

PHP杂货铺家庭在线记账理财管理系统源码

家庭在线记帐理财系统,让你对自己的开支了如指掌,图形化界面操作更简单,非常适合家庭理财、记账,系统界面简洁优美,操作直观简单,非常容易上手。 安装说明: 1、上传到网站根目录 2、用phpMyad…...

机器学习中的神经网络重难点!纯干货(上篇)

. . . . . . . . .纯干货 . . . . . . 目录 前馈神经网络 基本原理 公式解释 一个示例 卷积神经网络 基本原理 公式解释 一个示例 循环神经网络 基本原理 公式解释 一个案例 长短时记忆网络 基本原理 公式解释 一个示例 自注意力模型 基本原理…...

[DDR4] DDR1 ~ DDR4 发展史导论

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR4》 内存和硬盘是电脑的左膀右臂, 挑起存储的大梁。因为内存的存取速度超凡地快, 但内存上的数据掉电又会丢失,一直其中缓存的作用,就像是我们的工…...

享元和代理模式

文章目录 享元模式1.引出享元模式1.展示网站项目需求2.传统方案解决3.问题分析 2.享元模式1.基本介绍2.原理类图3.外部状态和内部状态4.类图5.代码实现1.AbsWebSite.java 抽象的网站2.ConcreteWebSite.java 具体的网站,type属性是内部状态3.WebSiteFactory.java 网站…...

[英语单词] ellipsize,动词化后缀 -ize

openvswitch manual里的一句话:里面有使用ellipsize,但是查字典是没有这个单词,这就是创造出来的动词。将单词ellipsis,加动词化后缀,-ize。 Often we ellipsize arguments not important to the discussion, e.g.: &…...

自然资源-测绘地信专业术语,值得收藏!

自然资源-测绘地信专业术语,值得收藏! 1、1954年北京坐标系 1954年我国决定采用的国家大地坐标系,实质上是由原苏联普尔科沃为原点的1942年坐标系的延伸。 2、1956年黄海高程系统 根据青岛验潮站1950年一1956年的验潮资料计算确定的平均海面…...

如何在小程序中实现页面之间的返回

在小程序中实现页面之间的返回,通常有以下几种方法,这些方法各有特点,适用于不同的场景: 1. 使用wx.navigateBack方法 描述:wx.navigateBack是微信小程序中用于关闭当前页面,返回上一页面或多级页面的API…...

深入解析数据结构之B树:平衡树中的王者

在计算机科学中,数据结构是算法和程序设计的基础。而在众多数据结构中,B树作为一种平衡树,在数据库和文件系统中有着广泛应用。本文将详细介绍B树的概念、特点、操作、优缺点及其应用场景,帮助读者深入理解这一重要的数据结构。 …...

18. 第十八章 继承

18. 继承 和面向对象编程最常相关的语言特性就是继承(inheritance). 继承值得是根据一个现有的类型, 定义一个修改版本的新类的能力. 本章中我会使用几个类来表达扑克牌, 牌组以及扑克牌性, 用于展示继承特性.如果你不玩扑克, 可以在http://wikipedia.org/wiki/Poker里阅读相关…...

OperationalError: (_mysql_exceptions.OperationalError)

OperationalError: (_mysql_exceptions.OperationalError) (2006, MySQL server has gone away) 这个错误通常表示客户端(例如你的 Python 程序使用 SQLAlchemy 连接到 MySQL 数据库)和 MySQL 服务器之间的连接被异常关闭了。这个问题可能由多种原因引起,以下是一些常见的原…...

DocGraph相关概念

结合简化版的直观性和专业版的深度,我们可以得到一个既易于理解又包含专业细节的DocGraph概念讲解。 DocGraph概述(简化版) 想象DocGraph就像是文章信息的地图。它通过拆分文档、识别关键词、分析关系,并最终以图形方式呈现这些…...

MySQL限制登陆失败次数配置

目录 一、限制登陆策略 1、Windows 2、Linux 一、限制登陆策略 1、Windows 1)安装插件 登录MySQL数据库 mysql -u root -p 执行命令安装插件 #限制登陆失败次数插件 install plugin CONNECTION_CONTROL soname connection_control.dll;install plugin CO…...

洛谷题解 - P1192 台阶问题

目录 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示代码 题目描述 有 N N N 级台阶,你一开始在底部,每次可以向上迈 1 ∼ K 1\sim K 1∼K 级台阶,问到达第 N N N 级台阶有多少种不同方式。 输入格式 两个正整数 N , K …...

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感,设置两条贪吃蛇吧,其中一条加倍成长以及加倍减少,另一条正常成长以及减少,最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...