Java 与 header 方法相关的函数中的不同 return 类型

Java different return type in a function respect to the header method

我正在使用 ANTLR4 来解析我的语法和 OWLAPI 来处理本体。由于我使用的是 Listener class,因此我无法修改 return 类型。举个例子:

public void exitSubConcept(Parser.SubConceptContext ctx) {
    OWLClassExpression first = stack.pop();
    OWLClassExpression second = stack.pop();
    OWLSubClassOfAxiom s = factory.getOWLSubClassOfAxiom(second, first);
    if(reasoner.isEntailed(s))
    {
        System.out.println(s.toString() + "is entailed");
    }
    else
    {
        System.out.println(s.toString() + "is NOT entailed");
    }
    super.exitSubConcept(ctx);
}

这太糟糕了,因为我唯一可以 return 的是打印,但我有兴趣提供 return 布尔类型(在本例中),而不仅仅是打印我无法管理。 无法修改return类型void,因为解析器崩溃了,对于这种情况,您有什么特别的建议吗?

您可以声明一个实例布尔变量并使用 hasEntailed() 来获取布尔值(我使用 hasEntails 来区分现有的 isEntailed() 方法)

private boolean entailed = false;

public boolean hasEntailed(){
    return entailed;
}

public void exitSubConcept(Parser.SubConceptContext ctx) {
    OWLClassExpression first = stack.pop();
    OWLClassExpression second = stack.pop();
    OWLSubClassOfAxiom s = factory.getOWLSubClassOfAxiom(second, first);
    if(reasoner.isEntailed(s))
    {
        System.out.println(s.toString() + "is entailed");
        entailed = true;
    }
    else
    {
        System.out.println(s.toString() + "is NOT entailed");
        entailed = false;
    }
    super.exitSubConcept(ctx);
}