首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCP 6实践问题- WeatherTest Enum

OCP 6实践问题- WeatherTest Enum
EN

Stack Overflow用户
提问于 2015-05-06 16:46:21
回答 2查看 210关注 0票数 1

"OCP 6程序员实践考试(考试310-065)“测试2中的一个问题。

给予:

代码语言:javascript
复制
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版本有什么关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-06 17:06:36

代码编译并给出了答案C。

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

票数 1
EN

Stack Overflow用户

发布于 2015-05-06 16:53:46

这本书是正确的,正确的答案是C,c c 1 1,因为可以测试这里

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

它与Java版本无关,它在所有版本的Java 6和更高版本中都是一样的。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30082810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档