我在类的方法中使用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"
答案 0 :(得分:1)
我无法“按原样”编译代码。我认为您已经在calling_foo中另外定义了ENUM_TYPE,TYPE1和TYPE2相反,因此calling_foo.ENUM_TYPE.TYPE1
实际上是使用的called_foo.ENUM_TYPE.TYPE2
,并且对应于ENUM_TYPE
。
当您调用cf.method时,应指定要使用的called_foo.ENUM_TYPE.TYPE1
枚举实际为{{1}}。这样代码就可以编译并获得预期的结果。