【发布时间】:2014-06-06 05:48:09
【问题描述】:
我有一个主类,它有一个线程池,很多其他类都使用它来对数据库执行操作。我目前有一个 getter 方法来获取池,它工作正常,但似乎有点笨拙。
在任何情况下可以接受使用公共字段而不是 getter/setter 方法吗?
【问题讨论】:
-
final 常量例如不需要 setter & getter
-
如果您愿意并且没有规范可以阻止它。公共字段本身没有任何问题,只是不建议您是否打算生成一个不能通过使用与您的意图相反的接口来破坏的“安全”API。
-
老实说,我认为这是一个基于意见的问题。是否使用 public 修饰符实际上取决于您和您的开发团队。如果您正在编写一个旨在供公众使用的库,那么您需要避免向公众提供对可以更改对象状态的字段的访问权限。如果这是只能在内部使用的东西,那么这取决于您的开发团队。您应该记录更改公共字段的值可能会产生奇怪的效果,因此只有在您知道自己在做什么的情况下才这样做。
-
我认为更好的选择可能是使用包级别修饰符(即无修饰符),以便只有此包中的类可以直接访问。