0

0

如何在 Java 中跨文件封装并私有化复用外部类的成员

霞舞

霞舞

发布时间:2026-02-03 20:36:10

|

921人浏览过

|

来源于php中文网

原创

如何在 Java 中跨文件封装并私有化复用外部类的成员

本文介绍一种通过组合(composition)模式,在不暴露内部细节的前提下,安全复用另一个类中动态变化的公共成员的方法,避免硬编码字段声明和重复维护。

在 Java 开发中,当多个类需要共享同一组配置或状态数据(如 someNumber、someString、example 等),而这些字段又可能随业务演进频繁增删改时,直接在每个使用方类中手动声明相同字段不仅冗余,更严重违背了 DRY(Don’t Repeat Yourself)原则与封装思想。你无法也不应要求 SomeOtherFile “预知” SetOfThings 的全部字段结构——这会将耦合固化在源码层面,丧失灵活性。

✅ 正确解法是采用对象组合 + 封装引用
SomeOtherFile 不复制字段,而是持有一个私有(且可选 final)的 SetOfThings 实例引用。所有对原始数据的访问均通过该引用间接完成,既保证了数据一致性,又实现了逻辑隔离。

以下是推荐实现:

// SetOfThings.java —— 数据载体(建议后续改为 package-private 或添加 getter)
public class SetOfThings {
    public int someNumber = 1;
    public String someString = "Java is kinda challenging sometimes...";
    public Joystick example = new Joystick(someNumber); // 注意:String 首字母大写,已修正
}
// SomeOtherFile.java —— 使用方(完全隐藏 SetOfThings 的内部结构)
public class SomeOtherFile {
    private final SetOfThings things; // final 保证引用不可变,增强安全性

    // 构造器注入,强制依赖明确化
    public SomeOtherFile(SetOfThings things) {
        this.things = Objects.requireNonNull(things, "SetOfThings cannot be null");
    }

    // 对外提供受控访问(示例方法)
    public void logConfig() {
        System.out.println("Number: " + things.someNumber);
        System.out.println("Message: " + things.someString);
        // things.example 可按需调用,但调用方无需知晓其存在
    }
}

? 关键优势说明

剪映专业版
剪映专业版

一款全能易用的桌面端剪辑软件

下载

立即学习Java免费学习笔记(深入)”;

  • 零字段同步成本:SetOfThings 新增/删除字段时,SomeOtherFile 无需任何修改;
  • 访问控制灵活:可通过封装 things 引用 + 提供有限 public 方法,避免暴露不必要细节;
  • 支持运行时动态绑定:可传入不同配置实例(如测试用 Mock 对象),利于单元测试;
  • ⚠️ 注意事项:若 SetOfThings 字段为 public,则仍存在被意外修改风险。强烈建议后续重构为 private 字段 + public final getter 方法,真正实现“只读视图”。
? 进阶提示:如需彻底禁止外部修改,可将 SetOfThings 设计为不可变类(Immutable Class)——所有字段 private final,构造器初始化,不提供 setter,并确保其引用类型(如 Joystick)也具备不可变性或防御性拷贝。

这种设计符合面向对象的高内聚、低耦合准则,是管理跨模块共享配置的标准实践。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

54

2025.11.27

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

512

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

17

2025.12.06

全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

15

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

24

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

14

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

2

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

12

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.2万人学习

C# 教程
C# 教程

共94课时 | 8.4万人学习

Java 教程
Java 教程

共578课时 | 56.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号