OCP Java SE 6练习问题 - Weathertest Enum



" OCP Java SE 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。汇编失败。

g。在运行时抛出一个例外。

答案说c。

但是,当我尝试运行此代码时,我会遇到编译错误,说"静态字段Weathertest.weather.Rainy应该以静态方式访问"。

哪个是正确且预期的,但是没有人在互联网上抱怨它,所以我想知道我是否缺少某些东西?它与Java版本有关吗?

这本书是正确的,正确的答案是C,c c 1 1,可以在此处进行测试。

此错误是由您的IDE产生的,该错误是从警告中提取的。假设您正确复制了所有代码。准备考试时不要使用IDE,请使用最简单的文本编辑器和javac

它与Java版本无关,在Java SE 6及更高版本中的所有版本都相同。

最后但并非最不重要的 - 永远不要写这样的代码。这只是考试hokus-pokus ...

代码编译并给出答案C。

所发生的一切是您的IDE向您发出警告,即您不应在类实例中访问静态成员,因为它令人困惑。w.RAINY使其看起来像RAINY是一个实例字段,而实际上它是静态的。在这种情况下,w实际上是null。访问静态成员的通常方法是使用ClassName.member。在这里您应该写Weather.RAINY

最新更新