news 2026/6/16 23:10:44

《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/6/16 3:07:46

​​Jmeter性能测试(性能测试,Jmeter使用与结果分析)

性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。本文简单讲述了性能测试以及性能测试工具Jmeter。另外&#xff0c…

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

AI搜索焦虑自救指南:一份面向2026年的系统化追赶方案

什么是AI搜索? AI搜索是一种利用大型语言模型工具(LLM)——如ChatGPT和Perplexity——在线查找信息的方式,这些工具能够从训练数据和网络源生成对话式、综合的答案。 用户不再像谷歌搜索结果那样扫描网站,而是获得清晰…

作者头像 李华
网站建设 2026/6/16 1:55:34

Selinux Context上下文

Selinux Context上下文 前面有提到主体,客体,te文件 等等。 也就是说某个进程(主体)对(客体)资源会有(哪些)权限(动作) 这里需要搞明白: 谁是主体…

作者头像 李华