使用类级别变量的转换案例语句

问题描述 投票:0回答:3

如何使用类级变量使用switch case语句。

@Value("${user.name}")
private static final String userName = "xyz";

public static void main(String[] args) {
  String nn = "xyz";
  switch (nn) {
    case userName:
        System.out.println("It Works!!");

  }
}

在上面的示例中,我有一个名为“ userName”的类级别变量,该变量正在从属性文件中检索值。要在switch case语句中使用此字段,我必须使其为final并分配一个值,但它不执行case语句。如何在switch case语句中使用类级别变量?

java switch-statement
3个回答
1
投票

它不会执行您的case语句,因为切换变量nn的值为“ abcd”,而在case变量userName内则为“ xyz”,它正在寻找“ abcd”大小写。


0
投票

case userName:中,表达式(userName)必须是(编译时)常量表达式

如果这样声明userName

private static final String userName = "xyz";

这是一个编译时表达式。

但是,如果String变量不是final,或者它具有空白的初始化程序,或者如果它被初始化为方法调用的结果...或其他一些事情,那么它就不是一个常量表达式。

阅读JLS 15.28以获取有关常量表达式的完整标准。


尚不清楚您的示例出现了什么问题,但是我希望它不会打印任何内容。 "abcd".equals("xyz")false


0
投票

以非专业人士的名义

int i = 1 ;
switch(i) 
case i:     // did you ever do that, it means execute case i when i is equal to i , i 
           //is always equal to i , so it does not make sense, which case you're 
           //talking about because i is not fix, you can say when i is 1 or 2 etc so you need to make it final to make it a constant
           // you're doing same thing with string
© www.soinside.com 2019 - 2024. All rights reserved.