Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在switch语句中可以使用Android整数资源吗?_Java_Android_Eclipse - Fatal编程技术网

Java 在switch语句中可以使用Android整数资源吗?

Java 在switch语句中可以使用Android整数资源吗?,java,android,eclipse,Java,Android,Eclipse,我在项目的“values”目录中有一个“numeric.xml”文件,其中保存了项目的大部分整数常量。我想在交换机语句中使用这些常数,但是Eclipse/java不喜欢这样,因为它不把Realth.GETTIGN(r.GANTENION,IGEGEYNEX)看作是常量。有没有办法让编译器和/或Eclipse看到它是一个常量,或者我只需要使用if/else链 编辑:我尝试了“final int INTEGER\u NAME=resources.getInteger(R.INTEGER.INTEGE

我在项目的“values”目录中有一个“numeric.xml”文件,其中保存了项目的大部分整数常量。我想在交换机语句中使用这些常数,但是Eclipse/java不喜欢这样,因为它不把Realth.GETTIGN(r.GANTENION,IGEGEYNEX)看作是常量。有没有办法让编译器和/或Eclipse看到它是一个常量,或者我只需要使用if/else链


编辑:我尝试了“final int INTEGER\u NAME=resources.getInteger(R.INTEGER.INTEGER\u NAME)”并在case语句中使用INTEGER\u NAME,但这也不起作用。

从技术上讲,您的整数资源值不是常量。编译器如何知道每种情况的值?对于不同的配置,总是有可能检索不同的值。(例如,您可以有一个
values-land
resource文件夹,其中包含不同的景观值。)或者您可以只更改xml文件中的值


如果它们确实是常量,请在代码中定义它们。我能看到的另一种选择是创建一个可运行(或可调用)对象的调度表,一个用于交换机的每个分支,并根据从资源中检索到的值检索相应的调度表。

好吧,
resources.getInteger(R.integer.integer\u NAME)
resources.getString>相比不是常数(R.string.string\u NAME)
:这是一个查找,因此您不能在case语句中真正使用它们。您将不得不使用if/else链。

我尝试了这些方法,结果成功了

Resources r = getResources(); 
int i = r.getInteger(R.integer.lol); 
switch (i) { 
    case 1: 
        Log.d("lol", "hehehe0"); 
        break; 
    default: 
        break; 
}

我尝试了这些,结果成功了
Resources r=getResources();int i=r.getInteger(r.integer.lol);switch(i){case 1:Log.d(“lol”,“hehehehe0”);break;default:break;}
@subsider-OP正在询问如何使用
r.getInteger(…)的结果
作为一个case值,而不是
开关
参数。Ted,谢谢你的回答。我希望你不介意我问你一个Java新手的问题。有没有一种干净的方法在Java中定义常量,使它们在一个地方定义,但可以被多个不相关的类看到?@Jim Clay是的,你将它们放在从Appli扩展而来的类中阳离子并将变量声明为静态,希望能有所帮助,但若它是常量,则使用xml资源更好,若它是复杂类型,则我将使用它static@Jim-为此,我经常使用接口。您可以将接口定义为字段值的集合。根据语言规范,这些值是隐式的最终值和静态值。@Ted Hopp我建议您不要这样做为常量定义接口,使用常量类,可能还有@dave.c-我喜欢使用接口的地方是,我可以简单地声明一个类来实现接口,所有常量名称都是类名称空间的一部分。你能详细说明为什么接口不是一个好主意吗?是的,我可以看到它在工作,但是这不是我想要的。我想用“case r.getInteger…”替换“case 1”。OP询问如何使用
r.getInteger(…)的结果
作为一个
大小写
值,而不是作为
开关
参数。@Jim Clay我能知道你为什么要做这些或在什么上下文中吗?我有一个函数,它接受一些输入参数,告诉它不要使用某些布尔值,将它们设置为true,或将它们设置为false。在C/C++程序中,我会使用枚举来处理类似的事情还有一个开关。显然,如果只有三种可能性,if/else链不是什么大问题,但我很好奇是否有解决方案。