Java 为什么在这个代码片段中整数被视为枚举?
我正在编写我的第一个android应用程序,下面是关于android开发者的指南和资源。我的背景:显然没有android开发经验,很少有java开发经验。后者可能是我陷入困境的原因 因此,请看一下有关处理权限的代码片段(来自): 正如你所看到的,我的权限、请求、阅读联系人是一个int常量 然后,它显示了回调方法onRequestPermissionsResult()的实现: 正如您所看到的,switch语句不将requestCode视为int,但它似乎将其视为Enum。但是,如果我尝试将枚举传递给requestPermissions(),它会给我一个错误,因为方法签名要求requestCode为intJava 为什么在这个代码片段中整数被视为枚举?,java,android,enums,int,android-permissions,Java,Android,Enums,Int,Android Permissions,我正在编写我的第一个android应用程序,下面是关于android开发者的指南和资源。我的背景:显然没有android开发经验,很少有java开发经验。后者可能是我陷入困境的原因 因此,请看一下有关处理权限的代码片段(来自): 正如你所看到的,我的权限、请求、阅读联系人是一个int常量 然后,它显示了回调方法onRequestPermissionsResult()的实现: 正如您所看到的,switch语句不将requestCode视为int,但它似乎将其视为Enum。但是,如果我尝试将枚举传递
我错过了什么?说来话长。短-性能和内存有效性 这里有更多的细节 这是谷歌的视频 但是现在,如果您真的需要,在代码中使用枚举是可以的 关于
requestCode
,Android系统只使用较低的16位。(
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request.
}
}