java - java中静态私有(private)类的问题

标签 java oop encapsulation

如果我有一个 java class SpecificDialog 并且在该类中我有一个 public static class Builder 用于构建 SpecificDialog 的对象那么 Builder 位于 SpecificDialog 内部的原因是因为它在逻辑上属于那里,因为它只能用于构建 SpecifcDialogs。这是主要原因吗?

但是如果Builder位于SpecificDialog内部,那么我的SpecificDialog就可以访问每个private字段/成员构建器。这可能是不可取的,因为我可能会无意中从外部 SpecificDialog 修改一些此类私有(private) Builder's 字段。

是否对此无能为力?如果没有,我是否可以理解这不是一个大问题?

最佳答案

无论您选择什么设计,您总是会无意中做一些不应该做的事情。让构建器成为它构建的类的静态内部类是一种常见的习惯用法,之所以使用这种习惯,正是因为外部类可以访问构建器的私有(private)字段。将构建器视为外部类的一个组成部分,就像私有(private)字段或方法一样,并确保该类及其构建器按其应有的方式运行。

关于java - java中静态私有(private)类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174986/

相关文章:

java - "text/event-stream"和 "application/stream+json"有什么区别

java - 在重载的构造函数中重用代码

c++ - 声明一个对象数组 : instantiates them

java - 比 HashTable 更好的数据结构来跟踪处理过的记录?

java - 如何输出期初和期末之间的所有月份。使用日历类

javascript - 如何为开发人员构建框架

javascript - 用JavaScript封装,存在吗?

java - 为什么我需要在其中添加交易?

java - 根据类实例进行操作