news 2026/4/16 14:51:54

《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/4/16 7:21:52

Day35 PythonStudy

浙大疏锦行 特性函数装饰器类装饰器作用对象函数类传入参数接收函数作为参数接收类作为参数返回值返回包装后的函数返回修改后的类常见用途修改函数行为修改类的结构核心逻辑用闭包包裹函数,在不修改函数代码的前提下扩展功能直接修改类的定义 特性类内部定义方法…

作者头像 李华
网站建设 2026/4/16 7:38:30

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

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

作者头像 李华
网站建设 2026/4/15 16:23:09

DAY 23 常见的特征筛选算法

前言: 在昨天我们提到了如何利用聚类方法来获得新的、信息量更多的特征以此来提升模型的各项性能指标,本文将采用相反的思路,通过一些常见的特征筛选方法减少部分特征以筛选出真正有信息的特征,进而减少计算量、提升模型的精度&am…

作者头像 李华
网站建设 2026/4/15 22:27:59

【Java毕设全套源码+文档】基于springboot的闲置物品共享平台设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 9:02:14

TinyMCE5支持pdf书签目录结构导入

企业级富文本编辑器Word粘贴与导入功能解决方案评估报告 一、需求背景分析 作为江苏某集团企业的项目负责人,我们近期在企业网站后台管理系统的文章发布模块中面临以下核心需求: 增加Word粘贴功能:支持从Word复制内容直接粘贴到编辑器&…

作者头像 李华