当我编译程序时,显示错误消息:找不到符号“VAL”。
那是唯一的编译器错误消息吗?如果是这样,请goto wtf;
。
如果不是,是否有任何其他编译器错误消息等同于编译器说它也找不到Ainterface
?如果是这样,你的问题很简单。似乎要么Aclass
在不同的包中,要么你打算让它在同一个包中。在前一种情况下,您需要import mypackage.Ainterface
. 后一种情况,你需要Aclass
和package mypackage
.
重量级:
您能否提供显示该问题的最小工作示例?问题是:我必须非常努力地重现您的问题,而且这不太可能是您遇到的问题。
可能性很少。
一个。Ainterface
并且Aclass
在同一个包中。在这种情况下,应该没有问题。
Ainterface.java:
package mypackage;
public interface Ainterface {
int VAL = 6;
}
Aclass.java
package mypackage;
public class Aclass implements Ainterface {
private String[] str = new String[VAL];
public static void main(String[] args) { }
}
湾。Ainterface
并且Aclass
在不同的包装中。在这种情况下,源文件中必须有一个import mypackage.Ainterface
import 语句。在这种情况下,应该没有问题。java
Aclass
package mypackage;
public interface Ainterface {
int VAL = 6;
}
Aclass.java:
package myotherpackage;
import mypackage.Ainterface;
public class Aclass implements Ainterface {
private String[] str = new String[VAL];
public static void main(String[] args) { }
}
在这两种情况下,代码都将按原样编译。这些都不会产生问题,它们是唯一有意义的两种可能性。还有第三种可能。请告诉我不是这个。您Ainterface
定义了两个,一个在一个包中,一个在另一个包中,并且与未定义的定义之一Aclass
相同:package
VAL
Ainterface.java:
package mypackage;
public interface Ainterface {
int VAL = 6;
}
Ainterface.java:
package myotherpackage;
public class Ainterface {
}
Aclass.java:
package myotherpackage;
public class Aclass implements Ainterface {
private String[] str = new String[VAL];
public static void main(String[] args) { }
}
这将产生错误。而且,需要明确的是,这可能是偶然发生的。假设您定义Ainterface
并放入mypackage
. 假设你定义Aclass
并且你没有把它放在同一个包中并且你忘记了 import mypackage.Ainterface
。如果您使用的是 Eclipse 之类的 IDE,您将收到一条Ainterface
无法解析为类型的错误消息,您将获得三个可用的快速修复:“Import 'Ainterface' (mypackage)”、“Create interface 'Ainterface '", "修复项目设置...". 如果您不小心单击了第二个选项,您最终会遇到这种情况。但这只是愚蠢的,这不可能是你想要的。所以,请帮助我们帮助您。