我最近遇到了关于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语句吗?