Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么切换导致无法解决错误?_Java_Eclipse_If Statement_Osgi_Switch Statement - Fatal编程技术网

Java 为什么切换导致无法解决错误?

Java 为什么切换导致无法解决错误?,java,eclipse,if-statement,osgi,switch-statement,Java,Eclipse,If Statement,Osgi,Switch Statement,我在包A中有一个枚举,它有一个静态转换器方法,我使用该方法为另一个包B中的一组特定类获取适当的枚举类型(另一个包中的每个类都有一个对应的枚举) 现在,从第三个包C,它不导入包a,但导入包B,我试图打开枚举 现在,当我使用开关检查枚举时,它会抱怨: 无法解析类型nz.ac.waikato.jstar.jstar.OrderOperator。它是从required.class间接引用的 档案 但是,当我使用if语句时,它不会 有人能解释一下为什么开关会导致错误,而如果不会导致错误吗 代码: 枚举引用

我在包A中有一个枚举,它有一个静态转换器方法,我使用该方法为另一个包B中的一组特定类获取适当的枚举类型(另一个包中的每个类都有一个对应的枚举)

现在,从第三个包C,它不导入包a,但导入包B,我试图打开枚举

现在,当我使用
开关检查枚举时,它会抱怨:

无法解析类型nz.ac.waikato.jstar.jstar.OrderOperator。它是从required.class间接引用的 档案

但是,当我使用if语句时,它不会

有人能解释一下为什么
开关
会导致错误,而
如果
不会导致错误吗

代码:

枚举引用捆绑包A的静态方法(OrderOperator来自捆绑包A):


公共静态OrderingConnectionType getType(类将OrderingConnectionType.prefix添加到开关的大小写中,它将起作用。

您应该给出要比较的确切枚举类型。.您在
if语句中执行此操作,而不是在
开关中执行此操作

switch (connection.getType()) {
    case OrderingConnectionType.LESS_THAN:
        break;
    case OrderingConnectionType.LESS_THAN_EQUALS:
        break;
    default:
        break;
}

检查您的导入语句。“小于”和“小于等于”枚举值可能是从类型
nz.ac.waikato.jstar.jstar.OrderOperator
导入的,而不是您自己的
OrderingConnectionType

查看教程-实际上,当我尝试此操作时,它给出了一个不同的错误:“限定的事例标签OrderingConnectionType.LESS_THAN必须替换为限定的枚举常量LESS_THAN”否,OrderOperator是一个具有两个子类的超类-OrderLessThan和OrderLessThanEqual。
public static OrderingConnectionType getType(Class<? extends OrderOperator> operatorType) {
    for (OrderingConnectionType type : OrderingConnectionType.values()) {
        if(type.operatorType.isAssignableFrom(operatorType)) return type;
    }
    throw new IllegalArgumentException("Unknown Operator type: " + operatorType);
}
switch (connection.getType()) {
    case OrderingConnectionType.LESS_THAN:
        break;
    case OrderingConnectionType.LESS_THAN_EQUALS:
        break;
    default:
        break;
}