news 2026/9/3 3:53:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 3:13:54

全基因组重测序上游分析流程--随笔15

全基因组重测序上游分析流程|从软件部署到变异检测,超细致实操指南 作为科研新手,第一次上手全基因组重测序数据处理时,我踩过不少软件安装的坑、碰过参数设置的雷。如今整理出这份超详细流程,从前期准备到最终变异过…

作者头像 李华
网站建设 2026/9/2 18:13:50

中间件开发与生命周期管理

目录中间件开发与生命周期管理1. 引言:中间件的重要性 {#引言}2. 中间件的基本概念与原理 {#基本概念}2.1 中间件的定义与分类2.2 中间件的核心特征3. 中间件的生命周期模型 {#生命周期模型}3.1 生命周期的五个阶段3.2 状态转移矩阵3.3 生命周期时长模型4. 中间件开…

作者头像 李华
网站建设 2026/9/2 9:36:28

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

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

作者头像 李华
网站建设 2026/9/2 15:16:37

《UGC工具的能力梯度解锁指南》

很多产品陷入“功能越多越强大”的误区,却忽略了用户在碎片化场景下的核心诉求—当一位博主在通勤途中想用手机编辑图文时,过多的排版选项会成为认知负担,而过于简化的功能又无法满足专业表达需求。这就需要建立“感知负荷拆解模型”,将复杂功能拆解为“基础必选”“进阶可…

作者头像 李华
网站建设 2026/9/1 6:21:33

【算法题】滑动窗口(一)

滑动窗口是处理子串/子数组问题的经典双指针技巧,核心是通过维护一个“窗口”(左右指针界定的区间),动态调整窗口范围来满足题目条件,从而高效求解问题。 一、无重复字符的最长子串 题目描述: 给定一个字符…

作者头像 李华
网站建设 2026/9/3 2:49:58

Office Tool Plus v10.29.50 office安装激活一条龙

🔞简介:Office Tool Plus是一款相当牛逼的office安装工具,并且安装完了顺带激活,也可以很快捷的卸载office清除激活信息等等。下载最新的office2016免去那么多的麻烦,反方便~【下载地址】:链接:https://dri…

作者头像 李华