switch case不能在android上使用max integer

时间:2018-04-05 12:45:54

标签: android

我最近遇到了关于android的switch case语句的问题。 因此我写了以下例子:

package com.example.testswitchcase;

import android.app.Activity;
import android.os.Bundle;


public class MainActivity extends Activity {

    static final int STATE_A = Integer.MAX_VALUE;
    static final int STATE_B = STATE_A - 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final int state = STATE_A;
        switch (state) {
        case STATE_A:
            System.out.println("state A");
            break;

        case STATE_B:
            System.out.println("state B");
            break;

        default:
            System.out.println("unknown state "+state+" (A: "+(state==STATE_A)+", B: "+(state==STATE_B)+")");
            break;
        }
    }

}

打印unknown state 2147483647 (A: true, B: false)。 (目标SDK 21,最低版本SDK 8,在Android 4.0.4和Android 2.2上执行)

在普通Java项目(Java 7)中运行相同的switch case语句,打印state A,如我所料。

这是一个已知问题吗? 使用不同的数字时,我可以依赖switch case语句吗?

0 个答案:

没有答案