| Interfaces should be used to define types. Using an interface as a collection of | |
| static methods and fields violates that, and can lead to confusing type | |
| hierarchies if the interface is then implemented to allow easy access to the | |
| constants. | |
| Prefer using a `public final` class instead to prohibit subclassing. | |
| ```java | |
| public interface Constants { | |
| final float PI = 3.14159f; | |
| } | |
| ``` | |
| ```java | |
| public final class Constants { | |
| public static final float PI = 3.14159f; | |
| private Constants() {} | |
| } | |
| ``` |