按照Joshua Bloch,"Effective Java"作者的说法:

常量接口模式是接口的一种误用。

类使用一些内部常量是一种实现细节。 实现常量接口会导致这些实现细节泄露到类的导出API中。 不建议用户的类四号线一个常量接口。 实际上,它会导致困惑。 更糟糕的是,它代表了一个承诺: 如果未来发布的类进行了修改,不在需要这个常量, 它依然必须实现接口来保证二进制兼容。 如果非final类实现了常量接口, 所有子类都会被接口中的常量污染。

比如:

interface Status {               // Non-Compliant
   int OPEN = 1;
   int CLOSED = 2;
}

应该重构为:

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

或修改为:

public final class Status {             // Compliant
   public static final int OPEN = 1;
   public static final int CLOSED = 2;
}