两个java文件位于同一目录下。
//c:\javaSource\ClassA.javaimport static ClassB.*;public class ClassA {
  public static void main(String[] args) {
    printMessage();
  }
}
//c:\javaSource\ClassB.javapublic class ClassB {
  public static void printMessage() {
    System.out.println("Hello world!");
  }
}
报错:找不到类ClassB; 找不到printMessage()我知道问题是由静态导入引起的。一种解决方案是在printMessage()前加上ClassB.
但这种方法相当繁琐。尤其是在需要大量使用ClassB的静态方法的时候,每个方法前面都加上类名限定使得代码的可读性很差。
如何才能正确地static import呢?

解决方案 »

  1.   

    跟静态导入没关系,是因为你没定义包名。要用package定义包名才行。
      

  2.   

    直接在classA类中classB.printMessage(); 就可以了。这不也是你把printMessage() 定义为静态的原因吗。
      

  3.   


    呵呵,将printMessage()定义为静态是为了方便ClassA调用。
    诚如阁下所言,可以用classB.printMessage()。
    这种方案对于少量的函数的调用而言是没问题的。但如果大量使用,就会出现我前面所说的代码可读性差的问题。
    我想您一定用过import static来导入java类库中的包或特定方法。
    我现在就是想静态导入自己的类,不知道具体应该怎么操作。 
      

  4.   


    那么将文件放到javaSource包中,得到:
    //c:\javaSource\ClassA.javapackage javaSource;import static ClassB.*;public class ClassA {
      public static void main(String[] args) {
        printMessage();
      }
    }

    //c:\javaSource\ClassB.javapackage javaSource;public class ClassB {
      public static void printMessage() {
        System.out.println("Hello world!");
      }
    }
    运行之后还是同样的问题……。
    怎么导入呢?
      

  5.   


    package com.lw.test;public class ClassB {
      public static void printMessage() {
        System.out.println("Hello world!");
      }

    package com.lw.test;import static com.lw.test.ClassB.*;public class ClassA {
      public static void main(String[] args) {
        printMessage();
      }
    }import static com.lw.test.ClassB.*;关键所在!
      

  6.   

    import static javaSource.ClassB.*; 
      

  7.   


    应该是这样写
    还要注意你的classpath设置