《Effective Java》第24条:静态成员类优于非静态成员类

说明:

关于本博客使用的书籍,源代码Gitee仓库 和 其他的相关问题,请查看本专栏置顶文章:《Effective Java》第0条:写在前面,用一年时间来深度解读《Effective Java》这本书

正文:

学习本条之前,首先来了解一下嵌套类

原文P88:嵌套类:是指定义在另一个类的内部的类。嵌套类存在的目的应该只是为它的外围类提供服务。如果嵌套类将来可能会用于其他的某个环境中,它就应该是顶层类。嵌套类有四种:静态成员类(static member class)、非静态成员类(nonstatic member class)、匿名类(anonymous class)和局部类(local class)。除了第一种之外,其他三种都称为内部类(inner class)。本条目将告诉你什么时候应该使用哪种嵌套类,以及这样做的原因。

静态成员类(也叫静态内部类)是最简单的一种嵌套类,它声明在一个类的内部,可以访问外围类的所有成员,包括私有成员。

静态成员类 和 静态成员变量一样,也遵守可访问规则,如果被声明为私有的,则只能在它的外围类中访问。

静态成员类应该作为外部类的公有辅助类,与外部类一起使用才有意义。例如下例中 Calculator类 的公有静态成员类 Operation

// Calculator 类 demo1包 public class Calculator { // 公有静态成员枚举类:表示计算器支持的操作 public enum Operation { PLUS("+") { @Override public double apply(double x, double y) { return x + y; } }, MINUS("-") { @Override public double apply(double x, double y) { return x - y; } }, MULTIPLY("*") { @Override public double apply(double x, double y) { return x * y; } }, DIVIDE("/") { @Override public double apply(double x, double y) { if (y == 0) { throw new ArithmeticException("除数不能为0"); } return x / y; } }; private final String symbol; // 枚举构造方法 Operation(String symbol) { this.symbol = symbol; } // 抽象方法:定义操作的计算逻辑 public abstract double apply(double x, double y); } // 计算器计算方法:接收操作类型和两个数值 public double calculate(double x, double y, Operation operation) { return operation.apply(x, y); } } // Main类 Calculator calculator = new Calculator(); // 使用静态成员枚举类引用操作 double addResult = calculator.calculate(10, 5, Calculator.Operation.PLUS); S

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1004955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LC项目实战一:PCB设计(三)

一、原理图导入变更设计-从原理图导入变更单击“应用修改”快速布局2D渲染效果图3D渲染效果图通过鼠标左键可以旋转3D效果图二、PCB图层和布线布线快捷键与原理图相同,使用ALT键加W键。布线时鼠标放在焊盘中间,有轻微吸附效果。点击鼠标左键确定导线起点…

Web Services 总结

Web Services 总结 引言 Web Services 是一种广泛应用于互联网上的服务架构,它允许不同平台、不同语言、不同操作系统的应用程序之间进行通信和交互。随着互联网技术的不断发展,Web Services 已经成为了企业级应用开发中不可或缺的一部分。本文将对 Web Services 进行全面总…

LC项目实战一:PCB DRC(四)

一、DRC设计-检查DRC没有消息就是最好的消息二、DRC错误演示三、DRC检查项目四、DRC设计规则

三种方式打 Java 可执行 JAR 包,你用对了吗?

三种方式打 Java 可执行 JAR 包,你用对了吗?写完代码只是开始,如何打包成一个“开箱即用”的 JAR 文件,才是交付的关键一步。很多 Java 开发者都遇到过这样的问题: 本地跑得好好的程序,一打包就报错 ClassN…

【题解】Luogu P10502 Matrix Power Series

题意分析 给定一个 \(n \times n\) 的矩阵 \(A\) 和正整数 \(k\),求 \(S=A^1+A^2+\cdots+A^k\)。 解题思路 求 \(A^n\) 要用到矩阵快速幂。但是 \(k \le 10^9\),求 \(k\) 个幂会超时,所以需要用到分治的策略。 我们…

【题解】Luogu P5175 数列

题目大意 给定一个递推式 \(a_n=x \times a_{n-1}+ y \times a_{n-2}(n≥3)\),求 \(\sum_{i=1}^na_i^2\)。 解题思路 递推通常是 \(O(n)\) 解法,但是本题 \(1 \le n \le 10^{18}\) 且 \(T=30000\)(注意是等于),所…

深入Ascend C:华为昇腾AI芯片的高性能编程语言详解

引言 随着人工智能技术的迅猛发展,专用AI加速芯片逐渐成为推动大模型训练与推理的核心硬件。在这一背景下,华为推出的昇腾(Ascend)系列AI处理器凭借其高能效比、大规模并行计算能力以及完整的软硬件生态体系,迅速在全…

SpringBoot 企业级接口加密【通用、可配置、解耦的组件】「开闭原则+模板方法+拦截器/中间件模式」

将加解密逻辑封装成通用、可配置、解耦的组件,核心是遵循「开闭原则模板方法拦截器/中间件模式」,让业务代码无需嵌入加密逻辑,仅通过注解/配置指定需要加密的接口/字段即可。以下是落地方案,以Java Spring Boot(主流企…

论文AI率90%→5%!DeepSeek四大降ai率指令+3款神器实测(保姆级教程)

从高校毕业论文到期刊审稿,2025年的AIGC检测已经成为了所有人的“噩梦”。很多同学拿着DeepSeek或GPT生成的论文去查,AI率直接飙红到90%。 别焦虑!作为一个刚把AI率打下来的过来人,我发现:AI的痕迹其实是有迹可循的。…

【笔记】ST 表

求区间最值:RMQ问题。 用ST表求解。递推公式:\(K=(\log (R-L+1) \div \log (2))\) 直接在 cmath 中调用,cmath 中是以 \(10\) 为底,所以用到以上换底公式。也可以预处理 \(\log\) 优化常数复杂度。 log[i]=log[i/2…

05_C 语言进阶之避坑指南:编译器优化等级 —— 嵌入式开发中被忽略的 “隐形陷阱”

C 语言进阶之避坑指南:编译器优化等级 —— 嵌入式开发中被忽略的 “隐形陷阱” 一、编译器优化等级的 “坑”,你踩过吗? “代码在 O0 调试模式下运行正常,切换到 O2 优化后直接卡死?” “全局变量在优化后被编译器‘吃掉’,中断中修改的值主循环读不到?” “调试时…

从一维到二维:用Spire.XLS轻松将Python列表导出到Excel

在数据驱动的时代,Python已成为数据处理领域的瑞士军刀。然而,当我们处理大量数据时,如何将Python中结构化的List数据高效、准确地写入到Excel文件中,常常成为开发者面临的一个挑战。传统的文本文件输出或手动复制粘贴不仅效率低下…

Flutter Bloc 状态管理深度解析与开源鸿蒙 ArkUI 对标分析

文章目录Flutter Bloc 状态管理深度解析与开源鸿蒙 ArkUI 对标分析引言一、Flutter Bloc 核心原理与架构设计1.1 Bloc 设计理念1.2 Bloc 核心组件与依赖二、Flutter Bloc 实战开发:实现一个天气查询应用2.1 步骤1:定义 Event 与 State2.2 步骤2&#xff…

【笔记】矩阵快速幂

矩阵快速幂 矩阵乘法 + 快速幂 矩阵加法: 定义矩阵 \(C=A+B\)。 \(C_{i,j}=A_{i,j}+B_{i,j}\)。 矩阵乘法: 计算两个矩阵的乘法。\(n \times m\) 阶的矩阵 \(A\) 乘以 \(m \times k\) 阶的矩阵 \(B\) 得到的矩阵 \(C…

2026中专生不想做客服,如何提升自己?

🫧毕业季来临,不少中专生发现自己的求职列表里,客服岗占了大半——重复的接线应答、琐碎的投诉处理、有限的薪资涨幅,再加上狭窄的晋升空间,让很多人望而却步。关键在于跳出“低门槛、高重复”的客服赛道,打…

【笔记】最近公共祖先 - 倍增

最近公共祖先(LCA) Luogu P3379【模板】最近公共祖先(LCA) 倍增能在 \(\log(n)\) 解决从 \(u\) 到 \(v\) 的路线问题。 我们往上跳,\(f[i][j]\) 表示 \(i\) 节点往上跳 \(2^j\) 步。 \(f[i][0]=father[i]\) \(f[i…

2026大专建筑工程必看!这些证书让你找工作不踩雷!

各位建工专业的同学们,2026年的建筑行业正在经历深刻转型。“大干快上”的时代过去了,现在是拼技术、拼管理、拼合规的时代。作为大专生,我们学历上不占优,但恰恰可以通过实操技能和专业证书,在施工现场打出一片天。今…

这的确很棒

电脑课自由:https://blog.csdn.net/gitblog_00491/article/details/153757144

【笔记】龟速乘与快速幂

龟速乘与快速幂 n&1: 取n的二进制最末位 n>>1: 右移一位,相当于去掉n的二进制最末尾(相当于n/2) n<<1 相当于n*2 if(n%2==1) 可以写成if((n&1)==1)或if(n&1) 位运算比 +-*/ 更快龟速乘 求 …

2025 最新家电维修平台 TOP5 评测!优质家电维修服务商榜单发布,数智化赋能 + 全城覆盖,品质服务重构家庭生活体验 - 全局中转站

随着居民对品质生活需求的提升,家电维修与家政服务已成为家庭生活的刚需。本榜单基于服务覆盖广度、工程师专业度、响应时效、用户满意度四大维度,结合行业服务标准与真实用户反馈,权威解析2025年五大优质服务平台综…