开关(未知变量类型)
switch (unknown variable type)
我想根据 superClassII
类型做一些治疗。所以,我定义了:
ClassExpressionType superClassIIType = superClassII.getClassExpressionType();
如果(superClassIIType = "ObjectMincardinality"or
"ObjectExactCardinality"`那么,
I do the same treatment for superClassII
else
我们什么都不做。
这是我的部分源代码:
switch(superClassIIType){
case OBJECT_EXACT_CARDINALITY:
case OBJECT_MIN_CARDINALITY:
if ((((superClassIIType)superClassII).getProperty().equals(
((OWLObjectMinCardinality)superClass).getProperty() ){
int superClassIICardinality =((superClassIIType)superClassII).getCardinality();
...
}
break;
default:
break;
}
但是,好像superClassIIType
不被接受。我试图通过一个简单的 if ...else
来做我需要的事情,其中 if 和 else 块包含相同的处理(它有效但我认为它是幼稚的)。
能否请您告诉我问题出在哪里,是否可以使用其他替代方案来实现我需要的功能))
这最好由访问者来完成,尽管这需要您复制代码。如果您使用的是 OWLAPI 5,请实施 OWLClassExpressionVisitor
- 这里是所有内容的默认方法,因此您只需为您希望使用的类型实施这两种方法。
OWLClassExpressionVisitor visitor = new OWLClassExpressionVisitor() {
public void visit(OWLObjectMinCardinality c) {
int superClassIICardinality = c.getCardinality();
}
@Override
public void visit(OWLObjectExactCardinality ce) {
int superClassIICardinality = c.getCardinality();
}
};
superClassII.accept(visitor);
我想根据 superClassII
类型做一些治疗。所以,我定义了:
ClassExpressionType superClassIIType = superClassII.getClassExpressionType();
如果(superClassIIType = "ObjectMincardinality"or
"ObjectExactCardinality"`那么,
I do the same treatment for superClassII
else
我们什么都不做。
这是我的部分源代码:
switch(superClassIIType){
case OBJECT_EXACT_CARDINALITY:
case OBJECT_MIN_CARDINALITY:
if ((((superClassIIType)superClassII).getProperty().equals(
((OWLObjectMinCardinality)superClass).getProperty() ){
int superClassIICardinality =((superClassIIType)superClassII).getCardinality();
...
}
break;
default:
break;
}
但是,好像superClassIIType
不被接受。我试图通过一个简单的 if ...else
来做我需要的事情,其中 if 和 else 块包含相同的处理(它有效但我认为它是幼稚的)。
能否请您告诉我问题出在哪里,是否可以使用其他替代方案来实现我需要的功能))
这最好由访问者来完成,尽管这需要您复制代码。如果您使用的是 OWLAPI 5,请实施 OWLClassExpressionVisitor
- 这里是所有内容的默认方法,因此您只需为您希望使用的类型实施这两种方法。
OWLClassExpressionVisitor visitor = new OWLClassExpressionVisitor() {
public void visit(OWLObjectMinCardinality c) {
int superClassIICardinality = c.getCardinality();
}
@Override
public void visit(OWLObjectExactCardinality ce) {
int superClassIICardinality = c.getCardinality();
}
};
superClassII.accept(visitor);