深入浅出Java匿名内部类:用法详解与实例演示
匿名内部类(Anonymous Inner Class)在Java中是一种非常有用的特性,它允许你在一个类的定义中直接创建并实例化一个内部类,而不需要为这个内部类指定一个名字。匿名内部类通常用于以下几种情况:
- 实现接口:当你需要创建一个接口的实例,但又不想单独为这个实例写一个实现类时。
- 继承类:当你需要继承一个类,并添加一些特定的功能,但又不希望为此创建一个新的子类时。
- 事件处理:在图形用户界面编程中,经常使用匿名内部类来处理事件。
以下是匿名内部类的一些基本用法:
实现接口
interface GreetingService {void greet(String message);
}
public class Main {public static void main(String[] args) {GreetingService greetingService = new GreetingService() {@Overridepublic void greet(String message) {System.out.println(message);}};greetingService.greet("Hello, World!");}
}
在这个例子中,我们创建了一个GreetingService接口的匿名内部类实例,并实现了greet方法。
继承类
class Person {public void display() {System.out.println("This is a person.");}
}
public class Main {public static void main(String[] args) {Person person = new Person() {@Overridepublic void display() {System.out.println("This is an anonymous person.");}};person.display();}
}
这里,我们创建了一个继承自Person类的匿名内部类,并重写了display方法。
注意事项
- 匿名内部类可以访问外部类的成员,包括私有成员。
- 匿名内部类不能有构造器。
- 匿名内部类不能定义静态成员。
- 匿名内部类中的方法不能是抽象的,必须实现其继承的类或实现的接口的所有抽象方法。
使用匿名内部类可以让代码更加简洁,但它也可能使得代码更难以阅读和理解,因此在使用时需要权衡其优缺点。
相关文章:
深入浅出Java匿名内部类:用法详解与实例演示
匿名内部类(Anonymous Inner Class)在Java中是一种非常有用的特性,它允许你在一个类的定义中直接创建并实例化一个内部类,而不需要为这个内部类指定一个名字。匿名内部类通常用于以下几种情况: 实现接口:当…...
数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍
以下是一些常见的后端开发数据库选型: 关系型数据库(RDBMS):关系型数据库是最常见的数据库类型,使用表格和关系模型来存储和管理数据。常见的关系型数据库包括MySQL、PostgreSQL和Oracle等。这些数据库适合处理结构化数…...
【ArcGIS Pro实操第七期】栅格数据合并、裁剪及统计:以全球不透水面积为例
【ArcGIS Pro实操第七期】批量裁剪:以全球不透水面积为例 准备:数据下载ArcGIS Pro批量裁剪数据集1 数据拼接2 数据裁剪3 数据统计:各栅格取值3.1 栅格计算器-精确提取-栅格数据特定值3.2 数据统计 4 不透水面积变化分析 参考 准备࿱…...
【Linux】Image、zImage与uImage的区别
1、Image 1.1 什么是 Image Image 是一种未压缩的 Linux 内核镜像文件,包含了内核的所有代码、数据和必要的元信息。它是 Linux 内核在编译过程中生成的一个原始的二进制文件,未经过任何压缩或额外的封装处理。由于未压缩,Image 文件相对较…...
算子加速(3):自定义cuda扩展
需要自定义某个层,或有时候用c++实现你的操作(c++扩展)可能会更好: 例如:需要实现一个新型的激活函数例如: bevfusion用cuda实现bevpool加速自定义扩展的步骤 (1) 首先用纯pytorch和python 实现我们所需的功能,看看效果再决定要不要进一步优化(2) 明确优化方向,用C++ (或CU…...
信息安全数学基础(14)欧拉函数
前言 在信息安全数学基础中,欧拉函数(Eulers Totient Function)是一个非常重要的概念,它与模运算、剩余类、简化剩余系以及密码学中的许多应用紧密相关。欧拉函数用符号 φ(n) 表示,其中 n 是一个正整数。 一、定义 欧…...
7-17 汉诺塔的非递归实现
输入样例: 3输出样例: a -> c a -> b c -> b a -> c b -> a b -> c a -> c 分析: 不会汉罗塔的uu们,先看看图解: 非递归代码: #include<iostream> #include<stack> using namespace std; s…...
word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32
前提: windows环境下,并且安装了office套装,比如word,如果需要调用excel.也需要安装。在另外的文章会介绍。这种是直接调用word的。所以还原度会比较高。 需求: word文档转pdf,要求使用命令行形式,最终发布为api接口…...
海康威视相机在QTcreate上的使用教程
文章目录 前言:基础夯实:效果展示:图片展示:视频展示: 参考的资料:遇到问题:问题1:int64 does not问题2:LNK2019配置思路(这个很重要)配置关键图片:配置具体过…...
进程状态、进程创建和进程分类
文章目录 进程进程常见的状态进程调度进程状态变化关系 进程标识示例--进程标识的使用以及简介 进程创建fork函数vfork函数示例--使用fork函数创建子进程,并了解进程之间的关系 创建进程时发生的变化虚拟内存空间的变化示例--验证fork函数创建进程时的操作 对文件IO…...
java后端请求调用三方接口
java后端请求调用三方接口 /*** param serverURL http接口地址(例:http://www.iwsu.top:8016/dataSyn/bay/statsCar)* param parm 参数(可以是json,也可以是json数组)*/ public void doRestfulPostBody(St…...
C#使用TCP-S7协议读写西门子PLC(三)
接上篇 C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客 这里我们进行封装读写西门子PLC的S7协议命令以及连接西门子PLC并两次握手 新建部分类文件SiemensS7ProtocolUtil.ReadWrite.cs 主要方法: 连接西门子PLC并发送两次握手。两次握手成功后,才真正连…...
铝型材及其常用紧固件、连接件介绍
铝型材介绍(包括紧固件和连接件以及走线) 铝型材 铝型材一般是6063铝合金挤压成型,分为欧标和国标两个标准。(左边国标,右边欧标,欧标槽宽一点) 由于槽型不一样,相关的螺栓和螺母也…...
【裸机装机系列】7.kali(ubuntu)-安装开发所需工具
如果你是后端或是人工智能AI岗,可以安装以下推荐的软件: 1> sublime sublime官网 下载deb文件 安装命令 sudo dpkg -i sublime-text_build-4143_amd64.deb2> vscode 安装前置软件 sudo apt install curl gpg software-properties-common apt-t…...
[C语言]第九节 函数一基础知识到高级技巧的全景探索
目录 9.1 函数的概念 9.2 库函数 9.2.1 标准库与库函数 示例:常见库函数 9.2.2 标准库与头文件的关系 参考资料和学习工具 如何使用库函数 编辑 9.3 ⾃定义函数 9.3.1 函数的语法形式 9.3.2函数的举例 9.4 实参与形参 9.4.1 什么是实参? 9…...
1.1 计算机网络基本概述
欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言一、网络的基本概念二、集线器、交换机和路由器三、互连网与互联网四、网络的类型五、互连网的组成1. 边缘部分2. 核心部分 六、网络协议 前言 计算机网络是现代信息社会…...
Linux环境基础开发工具使用(gcc/g++与makefile)
1.Linux编译器-gcc/g使用 1. 背景知识 接下来的操作,我以gcc为例,因为两者选项都是通用的,所以也就相当于间接学习了 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器可识别代码)…...
PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
目录 介绍核心思想及其实现核心思想实现步骤 如何改进PointNet**局部几何结构的处理****动态图的引入****特征聚合的灵活性****全局和局部特征的结合** 论文题目:Dynamic Graph CNN for Learning on Point Clouds发布期刊:TOG作者单位:麻省理…...
FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析
GetBitContext结构体和其相关的函数分析: FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析 FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析 一、skip_bits函数 skip…...
加密
一、加密 加密运算需要两个输入:密钥和明文 解密运算也需要两个输入:密钥和密文 密文通常看起来都是晦涩难懂、毫无逻辑的,所以我们一般会通过传输或者存储密文来保护私密数据,当然,这建立在一个基础上,…...
告别重复输入密码!手把手教你为GitLab配置SSH密钥(Windows/Mac通用)
告别重复输入密码!手把手教你为GitLab配置SSH密钥(Windows/Mac通用) 每次提交代码都要输入密码?GitLab频繁的身份验证是否让你感到烦躁?作为开发者,我们每天要与版本控制系统打交道数十次,重复的…...
Swagger Client 完整教程:从零开始构建强大的 API 集成应用
Swagger Client 完整教程:从零开始构建强大的 API 集成应用 【免费下载链接】swagger-js Javascript library to connect to swagger-enabled APIs via browser or nodejs 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-js Swagger Client 是一款功能…...
快速生成eNSP自动化安装脚本原型,用快马AI告别繁琐配置
作为一名经常需要搭建网络实验环境的工程师,我深知华为eNSP安装过程的繁琐。每次在新设备上配置时,手动安装依赖、处理环境变量的过程都让人头疼。最近尝试用InsCode(快马)平台的AI辅助功能后,发现可以快速生成自动化安装脚本原型,…...
告别老系统!手把手教你用欧空局新版哥白尼数据空间下载Sentinel-2影像(附波段组合预览技巧)
告别老系统!手把手教你用欧空局新版哥白尼数据空间下载Sentinel-2影像(附波段组合预览技巧) 当欧空局宣布停用老版数据下载系统时,许多遥感从业者都感到一丝不安——毕竟旧系统虽然界面陈旧,但操作流程早已烂熟于心。作…...
5分钟掌握Scala.js构建工具链:从开发到生产的完整指南
5分钟掌握Scala.js构建工具链:从开发到生产的完整指南 【免费下载链接】scala-js Scala.js, the Scala to JavaScript compiler 项目地址: https://gitcode.com/gh_mirrors/sc/scala-js Scala.js是一个功能强大的Scala到JavaScript编译器,它允许开…...
Python新手必看:从安装到第一个GUI程序的全流程指南(含IDLE使用技巧)
Python新手必看:从安装到第一个GUI程序的全流程指南(含IDLE使用技巧) 引言 对于刚接触编程的新手来说,Python无疑是最友好的入门语言之一。它简洁的语法、丰富的库支持以及活跃的社区,都让学习过程变得轻松愉快。本文将…...
别再只会用OpenCV了!用GStreamer在树莓派上搭建一个低延迟的CSI摄像头监控系统(附Python代码)
树莓派CSI摄像头低延迟方案:GStreamer实战指南 在嵌入式视觉项目中,树莓派搭配CSI摄像头是经典组合,但许多开发者发现OpenCV的VideoCapture接口在实时性上表现不佳——高延迟、CPU占用率飙升、帧率不稳定等问题频发。我曾在一个智能门铃项目中…...
JavaScript高频八股
一、原型和原型链1、概念:每个对象都有一个隐藏的属性 __proto__(原型),指向它创建时的构造函数的 prototype(原型对象)。当访问对象的一个属性或方法时,如果对象本身没有,就会去它的…...
Rancher国内网络卡脖子?手把手教你配置私有镜像仓库(避坑RKE2 registries.yaml)
Rancher国内网络优化实战:私有镜像仓库配置全指南 引言 对于国内Kubernetes从业者来说,Rancher无疑是一款强大的集群管理工具。但在实际部署过程中,许多团队都遇到过因网络问题导致镜像拉取失败的困扰。想象一下,当你正准备部署一…...
告别手动移植!用ESP-IDF组件化方式管理你的Gui-Guider UI代码
告别手动移植!用ESP-IDF组件化方式管理你的Gui-Guider UI代码 在ESP32开发中,GUI界面的构建往往需要耗费大量精力。当使用LVGL配合Gui-Guider这样的可视化设计工具时,如何高效管理生成的UI代码成为提升开发效率的关键。本文将带你探索一种更优…...
