Should a class implement a constants-only interface?
<p>Today I looked at the <code>ZipEntry</code> class and found the following:</p>

<pre><code>public class ZipEntry implements ZipConstants, Cloneable
</code></pre>

<p><code>ZipConstants</code> does not define any methods - only constants (<code>static final int LOCHDR = 30</code>)</p>

<p>It then occurred to me that implementing the interface with constants lets you access those constants directly, as if they were defined in the class itself. For example:</p>

<pre><code>public interface Constants {
    static final int CONST = 2;
}

public class implements Constants {
    int doSomething(int input) {
        return CONST * input;
    }
}
</code></pre>

<p>Is there another reason not to use this, apart from:</p>

<ul>
<li>it is at first confusing where the constant is coming from</li>
<li>it is considered wrong to use interfaces for constants definition</li>
</ul>

<p>I'm curious because it is definitely not a very common practice.</p>
