Java函数方面的返回类型与header方法不同

时间:2016-12-08 22:35:02

标签: java return antlr antlr4

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

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);
}

这很糟糕,因为我唯一可以返回的是打印,但我有兴趣提供一个boolean的返回类型(在这个例子中),而不仅仅是我无法管理的打印。 没有办法修改返回类型void因为解析器崩溃,所以你有什么特别的建议来处理这种情况吗?

1 个答案:

答案 0 :(得分:1)

您可以声明一个实例布尔变量并使用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);
}