您的位置:首页 > 其它

Constants should not be defined in interfaces

2017-08-17 17:03 423 查看
According to Joshua Bloch, author of "Effective Java":


The constant interface pattern is a poor use of interfaces.

That a class uses some constants internally is an implementation detail.

Implementing a constant interface causes this implementation detail to leak into the class's exported API. It is of no consequence to the users of a class that the class implements a constant interface. In fact, it may even confuse them. Worse, it represents a commitment: if in a future release the class is modified so that it no longer needs to use the constants, it still must implement the interface to ensure binary compatibility. If a nonfinal class implements a constant interface,

all of its subclasses will have their namespaces polluted by the constants in the interface.


Noncompliant Code Example

interface Status {                      // Noncompliant
int OPEN = 1;
int CLOSED = 2;
}


Compliant Solution

public enum Status {                    // Compliant
OPEN,
CLOSED;
}


or

public final class Status {             // Compliant
public static final int OPEN = 1;
public static final int CLOSED = 2;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐