title: Implement an interface with final fields or access fields directly?
body: <p>Is there any advantage of NOT having a class <code>implement</code> an interface and instead use the final fields directly? For example:</p>
  
  <pre><code>public interface MyInterface {
      int CONST_A = 16;
      int CONST_B = 45;
  }
  </code></pre>
  
  <p>Approach 1:</p>
  
  <pre><code>public class MyClass implements MyInterface {
  
      MyClass() {
          System.out.println("A = " + CONST_A);
          System.out.println("B = " + CONST_B);
      }
  
  }
  </code></pre>
  
  <p>Approach 2:</p>
  
  <pre><code>public class MyClass {
  
      MyClass() {
          System.out.println("A = " + MyInterface.CONST_A);
          System.out.println("B = " + MyInterface.CONST_B);
      }
  
  }
  </code></pre>
  
  <p>I was wondering if any of the approaches above has advantage of any kind over the other. One of the places this situation occurs is in Blackberry where you have your localized texts defined as an interface with keys to the strings and you need to call a system API with the key as the argument in various parts of the code.</p>