gpt4 book ai didi

java - 为什么在Java类中找不到值?

转载 作者:行者123 更新时间:2023-12-01 07:08:46 25 4
gpt4 key购买 nike

当我定义这样的接口(interface)时,问题是这样的:

package mypackage;
public interface Ainterface {
int VAL = 6;
}

然后我定义了一个类:

public class Aclass implements Ainterface {
private String[] str = new String[VAL];
public static void main(String[] args) { ... }
}

当我编译程序时,出现错误消息:找不到符号“VAL”。

符号:VAL

职位:A级

最佳答案

When I compiler the program, there show the error message: can't find the symbol "VAL".

这是唯一编译器错误消息吗?如果是这样,请goto wtf;

如果没有,其他编译器错误消息是否等同于编译器说它也找不到Ainterface?如果是这样,那么你的问题就很简单了。看来 Aclass 位于不同的包中,或者您希望它位于同一个包中。在前一种情况下,您需要导入mypackage.Ainterface。对于后一种情况,您需要将 Aclasspackage mypackage 放在同一个包中。

wtf:

您能否提供显示该问题的最小工作示例?问题是:我必须非常努力地重现您的问题,而且这不太可能是您遇到的问题。

可能性很小。

a. AinterfaceAclass 位于同一个包中。在这种情况下,应该没有问题。

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) { }
}

b. AinterfaceAclass 位于不同的包中。在这种情况下,java 源文件中必须存在Aclassimport mypackage.Ainterface 导入语句。在这种情况下,应该没有问题。

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,但没有将其放在同一个包中,并且忘记导入mypackage.Ainterface。如果您使用的是 Eclipse 等 IDE,您将收到一条错误消息,指出 Ainterface 无法解析为类型,并且您将获得三个可用的快速修复:“Import 'Ainterface' (mypackage )”、“创建接口(interface)‘Ainterface’”、“修复项目设置...”。如果您不小心单击了第二个选项,您就会遇到这种情况。但这只是愚蠢的,不可能是您想要的。因此,请帮助我们帮助您。

关于java - 为什么在Java类中找不到值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com