news 2026/8/29 15:44:18

《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/8/28 8:13:22

儿童青少年近视干预科学指引,破解家长近视防控焦虑

近年来,我国经济社会快速发展推动电子产品全面普及,儿童青少年的生活与学习模式随之改变,眼健康问题愈发凸显。国家卫健委最新数据显示,我国儿童青少年总体近视率已达52.7%,且近视呈现明显的低龄化、重度化趋势&#x…

作者头像 李华
网站建设 2026/8/29 13:11:37

解析 .NET 核心基石:CTS、CLS 与 CLR 的核心价值与协同作用

.NET 框架的成功和其跨语言、跨平台能力的实现,离不开三大核心组件:通用类型系统 (CTS)、通用语言规范 (CLS) 和 公共语言运行库 (CLR)。这三者各自承担重要角色,但又紧密协作,共同构成了 .NET 生态的基础。掌握它们的作用是理解 …

作者头像 李华
网站建设 2026/8/29 6:05:44

Selinux权限的检测

Selinux权限的检测 当主体要真正去访问客体资源的时候,会去触发安全的认证的检测过程,比如说它有对应的权限,放行,如果没对应的权限,就访问失败,问题是,由谁来监控权限的合法性工作?…

作者头像 李华
网站建设 2026/8/29 2:12:02

甲骨文AI投资支出激增致股价创24年最大跌幅

甲骨文公司股价周四创下超过24年来最大跌幅,原因是该公司报告称在AI数据中心和其他设备上的支出大幅增加,而这些不断上升的支出转化为云计算收入的速度比投资者预期的要慢。甲骨文周三在声明中表示,作为数据中心支出指标的资本支出在本季度约…

作者头像 李华
网站建设 2026/8/28 18:03:21

TinyMCE4粘贴word超链接自动解析域名

超级Word粘贴神器 - 专治CMS编辑头疼病 各位PHP老铁们好啊!我是江苏某不知名码农小王,最近接了个企业官网改版项目,客户爸爸提了个"小"需求——要在后台直接粘贴Word还能保留所有样式!这不,我带着解决方案和…

作者头像 李华