我认为我合理地理解了包的使用,但在尝试使用导入包中的方法时遇到了一个表面上微不足道的问题。
我在以下目录结构中有三个文件:
他们的代码如下:
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新手。谢谢!
答案 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语句中,以确定从哪个包中查找类/方法。
如果名称中存在冲突或者您没有导入任何内容,则只需要在主程序体中明确提及该包。