javaimportstatic-import

Unable to do static import


//interface1.java

package package1;
   public interface interface1 {
      static final int a =10;
   }

//StaticImportTest.java

 import static package1.*;         //import package1.*; works

   class StaticImportTest {
      public static void main(String args[]) {
        System.out.println(a);     //System.out.println(interface1.a) works
      }
   }

when i am replacing the word "import static" with only "import" and using System.out.println(interface1.a) it works, but not sure why its not working in its current form.


Solution

  • For your static import to work the way you intended it would have to be import static package1.interface1.* or import static package1.interface1.a
    A static import imports public static members of a class either all with * or a specific one like for example a.
    A import on the other hand imports a package or specific classes from a package.

    Your import static package1.* would try to import all members from the class package1 in the root package.

    Making it a normal import and accessing a via interface1.a works because the import imports all classes from the package1 including interface1, therefor you can access a via the interface1 class.