news 2026/2/19 2:53:11

《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/2/15 20:52:43

Flutter Provider 状态管理深度解析与开源鸿蒙 ArkUI 状态管理对比

文章目录Flutter Provider 状态管理深度解析与开源鸿蒙 ArkUI 状态管理对比引言一、Flutter Provider 核心原理1.1 什么是 Provider1.2 Provider 核心组件1.3 Provider 工作流程二、Flutter Provider 实战教程2.1 环境准备2.2 案例:实现一个计数器应用步骤1&#xf…

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

Vue.js 前端框架开发知识点总结

前言Vue.js 作为目前最流行的前端框架之一,以其简洁的 API、灵活的组件化和优秀的性能获得了广大开发者的青睐。本文将系统总结 Vue.js 的核心知识点,帮助开发者更好地掌握这一框架。一、Vue.js 核心概念1.1 响应式原理Vue.js 的响应式系统是其核心特性&…

作者头像 李华
网站建设 2026/2/19 0:43:31

行测教程资源合集

归墟行测 文件大小: 9.9GB内容特色: 9.9GB行测全套题库视频精讲,夸克秒下适用人群: 国考、省考、事业单位备考者核心价值: 刷题模考解析一站式,提分快下载链接: https://pan.quark.cn/s/201aaf99d2e4 半月谈付费行测申论资料 文件大小: 57.6GB内容特色…

作者头像 李华
网站建设 2026/2/14 9:17:04

基于java的SpringBoot/SSM+Vue+uniapp的零工市场服务系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 🌞博主介绍:✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/2/18 14:59:56

C#如何实现大文件上传的日志记录?

大文件传输系统建设方案(ASP.NET技术栈) 一、项目背景与核心需求 作为公司项目负责人,针对产品部门提出的100G级大文件传输需求,需构建一套高兼容性、高稳定性、全浏览器支持的解决方案。核心需求如下: 功能需求&…

作者头像 李华