首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java的Switch语句中使用Integer类型

在java的Switch语句中使用Integer类型
EN

Stack Overflow用户
提问于 2014-10-01 10:13:56
回答 3查看 5.9K关注 0票数 4

我用java为我的android应用程序编写了一些简单的代码,我得到了这些错误。

case expressions must be constant expressionsprivate static final Integer是常数

代码语言:javascript
运行
复制
private static final Integer INVALID_USER = 901;
private static final Integer SENDING_FAILED = 902;
private static final  Integer OK = 903;
/*
 *
 *  And some more project related declaration...
 *
 */


        switch (responseCode){
            case INVALID_USER:

                    // logout
                    break;

            case SENDING_FAILED:

                    //resend request
                    break;

            case OK:
                    break;
        }

这是因为我使用了Integer Type,然后我将类型改为int,并解决了问题。

我的问题是,为什么我们不能使用Integer作为一个案例表达式。Docs说:“开关可以处理字节、短、字符和int原始数据类型,它还可以处理枚举类型(在Enum类型中讨论)、字符串类和一些包装某些原始类型的特殊类:字符、字节、短和整数”。,虽然变量是常数,但我读了这个问题,但是没有得到任何东西

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-01 10:33:46

常量表达式在开关语句中用作大小写标签(§14.11 ),对于赋值转换(§5.2 )和.

Definition of Constant Expression §15.28

编译时常量表达式是指原语类型的值或不突然完成的字符串的表达式。

现在,在上面的场景中,编译器正在寻找常量表达式,因为编译器在编译时应该知道,time.As声明Integer实际上不是编译器的常量表达式。

票数 3
EN

Stack Overflow用户

发布于 2014-10-01 10:35:13

"Docs行“Docs说:开关适用于字节、短、字符和int原语数据类型,它也适用于枚举类型(在Enum类型中讨论)、字符串类和一些包装某些原始类型的特殊类:字符、字节、短和整数。

代码语言:javascript
运行
复制
switch(expressions used here)

而不是用case语句。

您可以将原语类型intcase一起使用,然后在任何时候将Integer.valueOf(your_int_value);作为Integer使用。

票数 2
EN

Stack Overflow用户

发布于 2014-10-01 10:46:01

java不允许在开关中使用对象。我们可以使用字节、int、char和枚举值作为开关表达式。在jdk1.7中,我们可以使用字符串作为开关表达式。要对wrapper对象执行此操作,需要使用包装类的valueOf方法

代码语言:javascript
运行
复制
private static final Integer INVALID_USER = 901;
private static final Integer SENDING_FAILED = 902;
private static final  Integer OK = 903;
/*
 *
 *  And some more project related declaration...
 *
 */


        switch (responseCode){
            case INVALID_USER.valueOf():

                    // logout
                    break;

            case SENDING_FAILED.valueOf():

                    //resend request
                    break;

            case OK.valueOf():
                    break;
        }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26139028

复制
相关文章

相似问题

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