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

匿名内部类的使用场景 java反射机制

一、匿名内部类的使用场景匿名内部类是一种没有显式类名、直接在创建对象时定义并实例化的内部类。它通常用于“一次性使用”的场景让代码更简洁紧凑。主要使用场景包括1. 事件监听器GUI 编程在 Swing、AWT 或 Android 开发中需要为按钮、菜单等组件添加事件处理器。匿名内部类可以避免为每个事件单独创建类文件。button.addActionListener(new ActionListener() { Override public void actionPerformed(ActionEvent e) { System.out.println(按钮被点击); } });2. 多线程Runnable / Thread当需要临时启动一个线程执行任务时匿名内部类比单独定义Runnable实现类更简洁。new Thread(new Runnable() { Override public void run() { System.out.println(线程运行中...); } }).start();3. 比较器Comparator对集合进行排序时Collections.sort()或Arrays.sort()需要传入Comparator接口的实现。匿名内部类常用于快速定义自定义排序逻辑。ListString list Arrays.asList(apple, pear, banana); Collections.sort(list, new ComparatorString() { Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } });4. 回调函数或策略模式当需要一个简单的策略或回调逻辑且该逻辑只在此处使用时匿名内部类可避免定义多余的命名类。public interface Callback { void onSuccess(String result); } public void doAsync(Callback callback) { ... } // 调用时 doAsync(new Callback() { Override public void onSuccess(String result) { System.out.println(result); } });5. 自定义抽象类/接口的临时实现例如使用TimerTask、FilterServlet等抽象类或接口时若只用一次匿名内部类很方便。Timer timer new Timer(); timer.schedule(new TimerTask() { Override public void run() { System.out.println(定时任务执行); } }, 5000);匿名内部类的限制只能实现一个接口或继承一个抽象类/普通类。内部访问局部变量时该变量必须是final或实际不可变Java 8 后 effectivly final。不能定义静态成员常量除外。没有构造方法。现代替代方案Java 8如果接口只有一个抽象方法函数式接口可以用Lambda 表达式更简洁地替换匿名内部类。例如上面的Runnable、Comparator都可以改为 Lambdanew Thread(() - System.out.println(线程运行...)).start(); Collections.sort(list, (s1, s2) - s1.length() - s2.length());二、java反射机制Java反射机制是指在运行时动态地获取一个类的信息如方法、字段、构造器、注解等并能动态创建对象、调用方法、访问或修改成员包括私有成员的能力。核心功能获取Class对象Class.forName(类全名)、对象.getClass()、类名.class创建实例clazz.newInstance()或构造器的newInstance()访问成员方法getMethod()/getDeclaredMethod()并调用invoke()字段getField()/getDeclaredField()并调用get()/set()可配合setAccessible(true)打破封装构造器getConstructor()/getDeclaredConstructor()获取注解、父类、接口等元数据常见用途框架Spring、MyBatis的依赖注入、对象创建通用工具如JSON解析库根据字段名自动赋值动态代理JDK Proxy 基于接口反射调试或绕过私有成员进行测试注意事项性能比直接调用慢可考虑缓存Method/Field安全setAccessible(true)会破坏封装性可能带来安全风险权限在某些受限环境如安全管理器下可能失败

相关文章:

匿名内部类的使用场景 java反射机制

一、匿名内部类的使用场景匿名内部类是一种没有显式类名、直接在创建对象时定义并实例化的内部类。它通常用于“一次性使用”的场景,让代码更简洁紧凑。主要使用场景包括:1. 事件监听器(GUI 编程)在 Swing、AWT 或 Android 开发中…...

小小屠龙原始火龙手游官网下载:小小屠龙原始火龙最新官方下载渠道

《小小屠龙原始火龙》又名《赤血火龙单职业》《龙城秘境移动版》,是由安徽游昕联合忆往游戏运营的正版 1.80 火龙复刻 MMORPG 手游。1:1 复刻比奇、盟重土城、祖玛寺庙、赤月峡谷、火龙神殿等经典场景,创新融合战法道三职业核心能力的单职业体系&#xf…...

IwaraDownloadTool:简单快速的Iwara视频下载神器

IwaraDownloadTool:简单快速的Iwara视频下载神器 【免费下载链接】IwaraDownloadTool Iwara 下载工具 | Iwara Downloader 项目地址: https://gitcode.com/gh_mirrors/iw/IwaraDownloadTool 你是否经常在Iwara平台发现精彩的视频内容,却苦于无法轻…...

Codex适配国产信创环境安装部署与技术适配全解析

随着国家信创产业持续落地推进,党政、金融、能源、工业等关键行业全面开启信息技术软硬件国产化替代工作。基于自主可控、安全可信的核心需求,传统国外架构软硬件体系逐步被国产操作系统、国产芯片硬件替代。Codex作为主流的智能代码辅助、自动化开发工具…...

FPGA在遥感机器学习中的优势与优化实践

1. FPGA在遥感机器学习中的核心优势解析 FPGA(现场可编程门阵列)在边缘计算场景中展现出独特的价值主张。与通用处理器不同,FPGA通过硬件级并行架构实现两个关键突破:首先是数据流驱动的计算模式,消除传统冯诺依曼架构…...

数据集上新:柬埔寨环境健康入户调查

本数据集基于柬埔寨马德望省约400户家庭的环境健康入户调查而成,包括基本社会经济信息、家庭成员结构、呼吸道健康信息、其他健康信息(包括部分测量信息)、营养信息、清洁炉灶和燃料使用、风险和时间偏好、调查员自观察信息等数百条子数据。如…...

卷积神经网络(CNN)与深度学习视觉应用综述

在深度学习领域,卷积神经网络(CNN)是实现计算机视觉任务的基石。通过对这些基础理论的学习,我们能够构建起从特征提取到复杂场景理解的知识体系。第一部分:卷积神经网络基础1. 全连接网络面临的挑战传统的全连接神经网…...

3分钟快速修复洛雪音乐播放问题:六音音源完整指南

3分钟快速修复洛雪音乐播放问题:六音音源完整指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 你是否曾经在升级洛雪音乐后,发现心爱的歌单突然变成了灰色,…...

Go语言竞态检测:race条件

Go语言竞态检测:race条件 1. race检测 go test -race ./...2. 总结 -race检测器可以发现代码中的数据竞争。...

window11 恢复右键刷新

新建文本文档,粘贴下方代码,后缀改成 **.bat**,右键以管理员身份运行即可一键恢复传统右键菜单echo off reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve taskkill /f /im e…...

鸿蒙PC:Qt适配OpenHarmony实战【番茄刻】:工作和休息两种倒计时如何写成一个 QML 状态机

前言 欢迎加入鸿蒙PC开发者社区,共同打造开发者工具生态:鸿蒙PC开发者社区 :https://harmonypc.csdn.net/ 项目开源地址:https://atomgit.com/lqjmac/qtfqk 我更愿意把这类 Demo 当成工程切片来看:功能要小&#xf…...

手把手教你:把Ubuntu 20.04完整系统塞进U盘,打造随身便携开发环境

手把手打造Ubuntu 20.04便携开发环境:从镜像制作到硬件兼容全指南 在咖啡厅调试代码时发现环境配置丢失?出差临时借用同事电脑却无法运行你的开发工具?这些困扰程序员多年的痛点,其实只需要一个装满完整Ubuntu系统的U盘就能彻底解…...

别再让Ubuntu22.04时间错乱了!用hwclock和timedatectl搞定硬件时钟时区的保姆级教程

彻底解决Ubuntu 22.04时间同步问题:硬件时钟与时区管理权威指南你是否曾在双系统切换后发现Ubuntu显示的时间比实际快了8小时?或者每次重启后系统时间都会"跳票"?这些看似小问题背后,隐藏着操作系统与硬件时钟&#xff…...

直接去偏机器学习:用Bregman散度统一因果推断与协变量平衡

1. 项目概述与核心动机在因果推断、政策评估乃至更广泛的计量经济学和机器学习应用中,我们常常关心一个“目标参数”,比如平均处理效应(ATE)——也就是某项干预或政策对结果的平均影响。传统上,一个非常自然的想法是&a…...

Seraphine:英雄联盟玩家的智能游戏助手完整指南

Seraphine:英雄联盟玩家的智能游戏助手完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手,专为《英雄联盟》玩家设计…...

基于机器学习与RIS的毫米波用户角度定位:四波束探测实现低开销波束管理

1. 项目概述:当RIS遇见机器学习,如何用四个波束“锁定”用户? 在毫米波频段玩无线通信,就像在一条狭窄却充满障碍物的高速公路上开跑车。速度是快了,但一个不小心,信号就被墙、人甚至一片树叶给“堵”得严严…...

BepInEx 6.0技术揭秘:如何构建跨平台Unity插件框架的5大核心机制

BepInEx 6.0技术揭秘:如何构建跨平台Unity插件框架的5大核心机制 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 在Unity游戏开发领域,插件框架的技术实现一…...

猫抓:5步掌握网页资源嗅探工具,轻松下载全网视频

猫抓:5步掌握网页资源嗅探工具,轻松下载全网视频 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页上的精彩视频无…...

Terraform 实战:用 for 表达式将列表元素转换为大写

Terraform 技巧:使用 for 表达式将列表元素转换为大写 在 Terraform 配置中,我们经常需要对列表中的字符串进行批量转换,例如将小写名称统一转为大写,以满足某些标签规范或命名约定。本文以 var.names 列表为例,演示如何通过 for 表达式结合 upper 函数,生成一个全大写的…...

迁移学习与随机森林在乳腺癌预后模型中的实践与优化

1. 项目概述与核心价值在临床肿瘤学,尤其是乳腺癌治疗领域,一个精准的预后模型不仅是冰冷的统计工具,更是连接医生决策与患者希望的生命线。传统的预后工具,如基于临床病理特征的诺丁汉预后指数或更现代的基因组学工具&#xff08…...

OpenClaw 架构解析:Skill 与 Agent 的设计哲学与实现机制

摘要:本文深入剖析 OpenClaw 框架中 Skill 和 Agent 的核心概念、设计理念及协同机制,帮助开发者理解其模块化架构,并掌握最佳实践。 背景与问题 为什么需要 Skill? 在构建 AI Agent 系统时,我们面临几个核心挑战&am…...

深度学习在碳离子治疗剂量计算中的应用:U-Net、GAN与扩散模型对比

1. 项目概述:当深度学习遇上碳离子治疗剂量计算在放射治疗领域,尤其是像碳离子治疗这样的先进粒子疗法中,剂量计算的精度和速度是决定治疗成败的关键。碳离子因其独特的“布拉格峰”物理特性,能够将高剂量能量精准地沉积在肿瘤靶区…...

告别误报!用SCTransNet+Transformer搞定红外小目标检测(附PyTorch实战代码)

突破红外小目标检测瓶颈:SCTransNet与Transformer的实战融合在安防监控、遥感测绘和军事预警等关键领域,红外小目标检测技术正面临前所未有的挑战。当目标尺寸小于1010像素、信噪比低于2dB时,传统算法在复杂背景下的误报率往往高达30%以上。这…...

中医馆升级|结合瑞式养老模式的医养结合完整落地方案

传统中医馆最大瓶颈是:客流老化、单次交易、依赖坐诊、复购不稳定、没有社区刚需流量。中医馆最高级的升级路径,不是继续做针灸开药,而是转型社区银发康养中心,嫁接瑞式养老标准化体系,打造「中医诊疗瑞式社区养老」双…...

topcode【随机算法题】【2026.5.24打卡-java版本】

最长有效括号 要点&#xff1a;栈&#xff0c;push下标 class Solution {public int longestValidParentheses(String s) {//栈//放前哨-1Deque<Integer> stack new ArrayDeque<>();stack.push(-1);int ans 0;for(int i 0; i < s.length(); i){char c s.…...

5分钟上手:用LeaguePrank打造专属英雄联盟客户端

5分钟上手&#xff1a;用LeaguePrank打造专属英雄联盟客户端 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想要让你的英雄联盟客户端界面变得与众不同吗&#xff1f;LeaguePrank是一款基于官方LCU API开发的英雄联盟客户端美…...

《道德经》第二十章

本章以绝学无忧我独昏昏为核心&#xff0c;专讲体道者超越世俗价值、回归生命本源的精神境界&#xff0c;是老子自我写照式的抒情篇章。以“唯阿善恶相去几何”的追问破题&#xff0c;以“众人熙熙”与“我独泊兮”的强烈对比展开&#xff0c;最终以“贵食母”点明与道合一的生…...

华硕笔记本终极优化指南:如何用G-Helper轻量级工具全面提升使用体验

华硕笔记本终极优化指南&#xff1a;如何用G-Helper轻量级工具全面提升使用体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…...

别再折腾VMware Tools了!用FileZilla+SSH搞定Windows与Ubuntu虚拟机文件互传(保姆级教程)

告别VMware Tools烦恼&#xff1a;SSHFileZilla实现跨平台文件传输全攻略 每次在Windows和Ubuntu虚拟机之间传输文件时&#xff0c;VMware Tools总是给你带来各种麻烦&#xff1f;安装失败、兼容性问题、功能受限...这些问题我都经历过。今天我要分享的是一种更稳定、更通用的…...

[特殊字符] 旋转排序数组中的高效搜索:从线性到二分查找的进阶之路

给定一个由不同元素构成的旋转排序数组&#xff08;原本是升序排列&#xff0c;但在某个未知点进行了旋转&#xff09;&#xff0c;要求快速找到目标元素的索引。如果不存在&#xff0c;则返回 -1。 示例 1&#xff1a; 输入&#xff1a;arr [5, 6, 7, 8, 9, 10, 1, 2, 3], …...