![](/img/trans.png)
[英]Java compiler won't find methods from another Java file in same folder?
[英]Why doesn't Java compiler find class from another file?
所以,Main.java呼吁从House.java的House.class的方法一类房子应该从呼吁任命类的方法扩展继承 ,它位于Succession.java。
但是由于某种原因,编译器找不到Appointment
并假定它必须是缺少的变量,为什么? 如果我将约会类移到Main.java或给它自己的文件,编译器会找到它。
我之所以这样问,是因为我无法重新创建错误,
House.java:
public void succession(){
if (this.kinsmen.size() > 0){
Appointment.callHeir(this.head, Main.human.get(1));
Succession.java:
class Appointment extends Succession {
public static boolean callHeir(Human appointer, Human appointed){
错误:
error: cannot find symbol
Appointment.callHeir(this.head, Main.human.get(1));
^
symbol: variable Appointment
location: class House
编辑完整的代码最小化:
Main.java:
class Main {
public static void main(String[] args) {
House.succession();
}
}
House.java:
public class House {
public static void succession() {
Appointment.callHeir();
}
}
Succession.java:
class Succession{
}
class Appointment extends Succession {
public static void callHeir(){
}
}
我不确定,但这可能是原因:
编译Main.java
时遇到House.succession()
。
它没有找到House.class
所以它查找并编译了House.java
。
编译House.java
时遇到Appointment.callHeir()
。
它找不到Appointment.class
因此它查找不存在的Appointment.java
。
当我像这样更改House.java
public class House {
public static void succession() {
Succession dummy;
Appointment.callHeir();
}
}
一切正常。
这是因为它首先遇到了Succession dummy
,这使编译器查找了Succession.java
。 编译该文件后,我们将自动获得Appointment.class
。
正如其他人已经建议的那样,我强烈建议将Appointment
类放在其自己的文件中。
将约会类的访问修饰符/说明符设置为public
。 因为任何类的默认访问修饰符/符是default
其不列入允许访问从另一个类的类。
确保如果您需要从类外部访问该类,则该类的访问修饰符/说明符将是公共的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.