"OCP 6程序员实践考试(考试310-065)“测试2中的一个问题。
给予:
public class WeatherTest {
static Weather w;
public static void main(String[] args) {
System.out.print(w.RAINY.count + " " + w.Sunny.count + " ");
}
enum Weather {
RAINY, Sunny;
int count = 0;
Weather() {
System.out.print("c ");
count++;
}
}
}结果是什么? A. c 1 c 1 B. C、1、c、2 C. c-c 1 1 D. c、c、1、2 E、c、c、2、2 F.汇编失败。 在运行时抛出异常。
这本书的答案是C。
但是,当我尝试运行这段代码时,我会得到编译错误,说“静态字段WeatherTest.Weather.RAINY应该以静态方式访问”。
这是正确和预期的,但没有人抱怨在互联网上,所以我想知道我是不是错过了什么?它和Java版本有什么关系吗?
发布于 2015-05-06 17:06:36
代码编译并给出了答案C。
正在发生的一切是,IDE向您发出警告,警告您不应该访问类实例上的静态成员,因为它令人困惑。w.RAINY使它看起来像是一个实例字段,而实际上它是静态的。在这种情况下,w实际上是null。访问静态成员的通常方法是使用ClassName.member。在这里,您应该编写Weather.RAINY。
发布于 2015-05-06 16:53:46
这本书是正确的,正确的答案是C,c c 1 1,因为可以测试这里。
此错误由您的IDE生成,该IDE是从警告中提升的。假设您正确地复制粘贴了所有代码。在准备考试时不要使用IDE,使用最简单的文本编辑器和javac。
它与Java版本无关,它在所有版本的Java 6和更高版本中都是一样的。
最后但并非最不重要的一点--永远不要写那样的代码。这只是考试.
https://stackoverflow.com/questions/30082810
复制相似问题