我是Java的新手,所以如果代码看起来过于愚蠢,请耐心等待。 : - )
我想要实现的很简单:定义两个类ClassA
和ClassB
,它们都是同一个包find_class
的一部分(这也是目录的名称)课程在哪里。
所以我的文件如下。
ClassA.java
package find_class;
public class ClassA {
public void func() {
}
}
ClassB.java
package find_class;
import find_class.ClassA;
public class ClassB {
public static void main(String[] args) {
ClassA a = new ClassA();
}
}
当我编译ClassB
时,我遇到了许多错误:
find_class$ javac ClassB.java
ClassB.java:3: error: cannot find symbol
import find_class.ClassA;
^
symbol: class ClassA
location: package find_class
ClassB.java:7: error: cannot find symbol
ClassA a = new ClassA();
^
symbol: class ClassA
location: class ClassB
ClassB.java:7: error: cannot find symbol
ClassA a = new ClassA();
^
symbol: class ClassA
location: class ClassB
3 errors
我没有使用任何IDE,目录结构如下:
find_class
- ClassA.java
- ClassB.java
我做错了什么?
答案 0 :(得分:3)
包名称和类路径应该同步。换句话说,包名称是类路径的延续。
例如,如果文件夹结构是x / y / z,类路径是x / y,包名是z,那么你就不应该导入y.z
对您的案例应用相同的逻辑,您的类路径已设置为" find_class"。所以,你不需要import语句。
答案 1 :(得分:0)
你的类说它在Package“find_class”中,该类知道其包中的所有其他类,因此你不需要导入ClassA,因为它可以看到它。
删除行
import find_class.ClassA;
答案 2 :(得分:0)
您不需要导入其他类。例如,如果您想使用其他类中的方法,您应该使用像您一样的对象。
ClassA a = new ClassA();
顺便说一句,如果有相同的包,你就无法导入类。