gpt4 book ai didi

java - Java中的Switch语句会选择相反的情况

转载 作者:行者123 更新时间:2023-12-01 15:35:49 25 4
gpt4 key购买 nike

我在一个类的方法中使用了由另一个类调用的 switch 语句。

Switch 语句获取表示 enum 类型的变量作为输入。

被调用的类:

public class called_foo {

public static enum ENUM_TYPE {
TYPE2, TYPE1
}

public void method( ENUM_TYPE type ){

switch( type ){

case TYPE1: System.out.println("TYPE1");
break;

case TYPE2: System.out.println("TYPE2");
break;

default: System.out.println("Error in retrieving Type");
System.exit(1);
}
}

}

调用类:

public class calling_foo {

public void run(){

called_foo cf = new called_foo();
cf.method( ENUM_TYPE.TYPE1 );
}

public static void main(String[] args) throws Exception {

calling_foo f = new calling_foo();
f.run();
}

}

第一个问题:“这两个类的语法是否有错误?”

第二个问题:“如果不是,为什么输出与我期望的相反?”

输出:

if I call cf.method( ENUM_TYPE.TYPE1 ); I see on screen "TYPE2"
if I call cf.method( ENUM_TYPE.TYPE2 ); I see on screen "TYPE1"

最佳答案

我无法“按原样”编译您的代码。我认为你在calling_foo中再次定义了ENUM_TYPE,其中TYPE1和TYPE2颠倒了,这样calling_foo.ENUM_TYPE.TYPE1实际上是使用的,对应于 called_foo.ENUM_TYPE.TYPE2 .

您应该指定 ENUM_TYPE使用的枚举实际上是 called_foo.ENUM_TYPE.TYPE1当你调用 cf.method 时。这样代码就可以编译并获得预期的结果。

关于java - Java中的Switch语句会选择相反的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com