Java将方法返回值称为切换案例值

时间:2012-05-15 15:04:22

标签: java switch-statement case method-call

我必须使用一个值,通常通过switch case中的方法返回。

int getVal(){return 121;}

 switch(expr){

    case getVal():
 }

但它给出了编译错误:需要持续表达。

我也尝试过,

int _val = getVal();

 switch(expr){

    case _val:
 }

有相同的结果。

是否有任何解决方法可以实现它。

谢谢, 阿米特

2 个答案:

答案 0 :(得分:6)

由于错误明确指出,switch仅适用于常量表达式。

您需要使用if

答案 1 :(得分:0)

这不起作用,因为当你认为你的方法实际上是一个常数时,它可能被隐藏,类可能被分类,或任何数量的其他项可能会干扰

虽然编译器可能会尝试辨别返回值是常量,但它不会因为没有全局,因为Java项目中的类可以在不同的时间编译times(子类在父母后编译等)

还没有明确确定作为开关标签的功能意味着什么。虽然您可能会将其视为重命名常量的简写,但是其他人可能希望每次输入切换时都会对其进行评估,而其他人可能希望每次输入标签时对其进行评估,而另一个人可能期望它每次切换跳转到该标签时进行评估(这是不可能的,因为你必须先评估这个标签之前跳转到它。)因为没有明确的共识,最好不要将其排除在外。这种语言直到达成明确的共识。

这甚至没有保证这样的方法不会返回重复的标签(开关不支持相同值的多个标签)。