【发布时间】:2020-01-02 09:06:16
【问题描述】:
我有一个抽象类,其中包含每个子类将使用的一些常量。它们中的每一个都是静态的、最终的和不可变的。
public abstract class MyAbstract {
//some private instance fields
protected static final long LONG_ID = 1;
protected static final String STRING_ID = "example_id";
//some methods
}
我知道使用 protected static final 是不好的做法,但是不可变的 protected static final 呢? 我知道我可以将它们公开,但我想避免这样做,因为常量指的是用户不需要知道的特定 ID。
【问题讨论】:
-
在接口中声明常量不是更明智吗?
-
为什么受保护的静态最终是不好的做法?
-
@Kenrig 为什么会更明智?这也会使它们隐含地公开。
-
@Ava 你回答了你自己的问题:什么是不好的做法不是受保护的静态最终字段。不好的做法是可变常量。
-
@Ava 无论如何,这就是可变对象的问题,而静态只会使情况变得更糟。随心所欲地去做吧,像这样的小细节不太可能影响任何事情(除了消耗你的开发时间)。
标签: java oop abstract-class encapsulation