当我编译程序时,显示错误消息:找不到符号“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.Ainterfaceimport 语句。在这种情况下,应该没有问题。javaAclass
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相同:packageVAL
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 '", "修复项目设置...". 如果您不小心单击了第二个选项,您最终会遇到这种情况。但这只是愚蠢的,这不可能是你想要的。所以,请帮助我们帮助您。