当前位置: 首页 > 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…...

React中数据响应式原理

React作为当下最流行的前端框架之一,以其声明式编程和组件化架构而广受开发者喜爱。而React的数据响应式原理,是其高效更新DOM的核心机制。本文将深入探讨React中数据响应式原理,并结合代码示例进行论证。 响应式原理概述 在React中&#x…...

【FreeRTOS】ARM架构汇编实例

目录 ARM架构简明教程1. ARM架构电脑的组成1.2 RISC1.2 提出问题1.3 CPU内部寄存器1.4 汇编指令 2. C函数的反汇编 学习视频 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向)】 https://www.…...

【Linux】常见指令的使用

文章目录 which指令stat 指令wc指令echo指令tree 指令whoami指令clear指令alias指令ls指令pwd指令cd 指令touch指令mkdir指令(重要)rmdir指令 && rm 指令(重要)man指令(重要)cp指令(重要…...

C#面:详细阐述什么是 DTO

DTO(Data Transfer Object)是一种设计模式,用于在不同层之间传输数据。它的主要目的是在应用程序的不同部分之间传递数据,而不是直接传递实体对象。DTO通常是一个简单的POCO(Plain Old CLR Object)&#xf…...

「TCP 重要机制」三次握手四次挥手

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 三次握手&四次挥手 🍉连接管理🍌三次握手🍌意义🍌四次挥手🍌TCP 状态转换…...

Java数据库编程

引言 在现代应用开发中,与数据库交互是不可或缺的一部分。Java提供了JDBC(Java Database Connectivity) API,允许开发者方便地连接到数据库并执行SQL操作。本文将详细介绍Java数据库编程的基础知识,包括JDBC的基本概念…...

决策树算法介绍:原理与案例实现

一、引言 决策树是一种常用于分类和回归任务的机器学习算法,因其易于理解和解释的特点,在数据分析和挖掘领域有着广泛应用。本文将介绍决策树算法的基本原理,并通过一个具体案例展示如何实现和应用该算法。 二、决策树算法原理 1. 决策树结…...

业务代表模式

业务代表模式 引言 在软件工程中,设计模式是解决常见问题的经典解决方案。它们为开发人员提供了一种方法,以优雅和可重用的方式处理软件开发中的挑战。业务代表模式(Business Delegate Pattern)是一种行为设计模式,它主要关注于将业务逻辑与表示层(如用户界面)分离,以…...

LeetCode 算法:反转链表 c++

原题链接🔗:反转链表 难度:简单⭐️ 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:…...

【多线程】Thread类及其基本用法

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. Java中多线程编程1.1 操作系统线程与Java线程1.2 简单使用多线程1.2.1 初步创建新线程代码1.2.2 理解每个…...

天津建站管理系统价格/第三方网络营销平台有哪些

delete 操作符是从某个对象上移除指定属性,成功删除的时候返回 true ,否则返回 false。 如果删除的属性在对象上不存在,那么 delete 将不起作用,但仍会返回 true。 var person {age:100,name:"yangguo",}console.log(p…...

php网站开发系统/香港域名注册网站

优先发布信息到 劲风工作室 http://www.bigwindcn.com 欢迎访问,哈哈。转载于:https://www.cnblogs.com/shlcn/p/3683456.html...

wordpress form manager 中文/网站排名顾问

怎么把pdf拆分成一页一个文件?我们经常会遇到PDF文档里面的页面比较多,但是有时候我们只需要其中的一部分内容,该怎么办呢,这个时候就需要把这个PDF文件拆分成多个pdf文件了,或者按页面,或者只需要其中一两…...

微信开发人/北京网站优化外包

Sqoop中文手册 1. 概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档。为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数使用说明都经过了我的实际验证而得到。 2. codegen 将关系数据库表映射…...

vs2010网站制作教程/排行榜哪个网站最好

这里写目录标题1. 相关符号2. 基本知识 【同时行动博弈,或标准博弈】2.1 定义2.2 策略博弈表示2.3 最优反应策略2.3.1 最优反应策略定义3. 策略型博弈案例3.1 案例一3.2 案例二3.3 案例三3.4 案例四3.5 案例五3.6 案例六3.7 案例七3.8 案例八3.9 案例九参考1. 相关符…...

做外贸哪个网站可以接单/网址收录平台

1、下载bootstrap https://getbootstrap.com/docs/4.3/getting-started/download/ 2、在项目目录下创建static文件夹&#xff0c;将下载的bootstrap解压到该static下 3、新建html&#xff0c;layout.html,url_for引用bootstrap.css 这里的block为定义模块 <!DOCTYPE html…...