Java包 - 导入与显式包含

时间:2014-01-08 07:01:56

标签: java import package

我认为我合理地理解了包的使用,但在尝试使用导入包中的方法时遇到了一个表面上微不足道的问题。

我在以下目录结构中有三个文件:

  • Tester.java
  • approach1 \ Approach.java
  • approach2 \ Approach.java

他们的代码如下:

Tester.java

import approach1.Approach;

public class Tester {

    public static void main(String[] args)
    {
        approach1.Approach.sharedMethod("TEXT");

        sharedMethod("TEXT");
    }
}

approach1 \ Approach.java

package approach1; 

public class Approach {

    public static void sharedMethod(String approachText)
    {
        System.out.println("Approach Text: " + approachText);
    }
}

approach2 \ Approach.java

package approach2;

public class Approach {

    public static void sharedMethod(String approachText) { }

}

正如您可能猜到的那样,我试图根据导入的包/类来从不同的方法中引出不同的响应。我遇到的问题是在 Tester.java 中。第一个显式行正常工作,而第二个,导入行(sharedMethod(“TEXT”))抛出错误“方法sharedMethod(String)未定义类型Tester”。我不明白,因为我导入了其中一个软件包,因此该方法应该是可见的。

任何澄清都会被认可,因为我是Java新手。谢谢!

2 个答案:

答案 0 :(得分:3)

您可以像这样导入静态方法shareMethod

import static approach1.Approach.sharedMethod;

答案 1 :(得分:0)

您使用的标准类型的导入仅导入类 - 因此必须使用类名引用类中的所有内容。只需使用:

Approach.sharedMethod()

现在编译器将能够知道使用哪种方法,具体取决于您在顶部导入的方法类。

只是为了澄清:

    import approach1.Approach;
    public class Tester {
        public static void main(String[] args)
        {
            Approach.sharedMethod("TEXT");
        }
    }

不同
    import approach2.Approach;
    public class Tester {
        public static void main(String[] args)
        {
            Approach.sharedMethod("TEXT");
        }
    }

您应该只指定类名并将其保留在顶部的package import语句中,以确定从哪个包中查找类/方法。

如果名称中存在冲突或者您没有导入任何内容,则只需要在主程序体中明确提及该包。

相关问题