我必须使用一个值,通常通过switch case中的方法返回。
int getVal(){return 121;}
switch(expr){
case getVal():
}
但它给出了编译错误:需要持续表达。
我也尝试过,
int _val = getVal();
switch(expr){
case _val:
}
有相同的结果。
是否有任何解决方法可以实现它。
谢谢, 阿米特
答案 0 :(得分:6)
由于错误明确指出,switch
仅适用于常量表达式。
您需要使用if
。
答案 1 :(得分:0)
这不起作用,因为当你认为你的方法实际上是一个常数时,它可能被隐藏,类可能被分类,或任何数量的其他项可能会干扰
虽然编译器可能会尝试辨别返回值是常量,但它不会因为也没有全局,因为Java项目中的类可以在不同的时间编译times(子类在父母后编译等)
还没有明确确定作为开关标签的功能意味着什么。虽然您可能会将其视为重命名常量的简写,但是其他人可能希望每次输入切换时都会对其进行评估,而其他人可能希望每次输入标签时对其进行评估,而另一个人可能期望它每次切换跳转到该标签时进行评估(这是不可能的,因为你必须先评估这个标签之前跳转到它。)因为没有明确的共识,最好不要将其排除在外。这种语言直到达成明确的共识。
这甚至没有保证这样的方法不会返回重复的标签(开关不支持相同值的多个标签)。