Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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.util.Observable.addObserver(Observer o)在main中返回值或更新对象值?_Java - Fatal编程技术网

如何使用Java.util.Observable.addObserver(Observer o)在main中返回值或更新对象值?

如何使用Java.util.Observable.addObserver(Observer o)在main中返回值或更新对象值?,java,Java,我在main方法中有以下代码摘录: CsparqlQueryResultProxy c1 = null; c1 = engine.registerQuery(query, false); c1.addObserver(new RDFResultsProcesser()); 为了获得Observer参数值,我创建了一个新类作为ResultsFormatter的扩展,如下所示: public class RDFResultFormatter extends ResultFormatter {

我在main方法中有以下代码摘录:

CsparqlQueryResultProxy c1 = null;
c1 = engine.registerQuery(query, false);
c1.addObserver(new RDFResultsProcesser()); 
为了获得Observer参数值,我创建了一个新类作为
ResultsFormatter
的扩展,如下所示:

public class RDFResultFormatter extends ResultFormatter {
    @Override
    public void update(Observable o, Object arg) {
        RDFTable res = (RDFTable) arg;
        for (final RDFTuple t : res) {
            String rdfName = t.get(0);
           String rdfVal = t.get(1);
        }
    }
}

但是,我不能返回main中的
rdfName
rdfVal
的值,我知道它是空函数,因为update是一个空函数。有人知道如何在main中返回这些值吗?

返回值(通常意义上)意味着从程序中的一个点到生成该值的方法有一系列调用。由于代码触发的某些更改对更改的值不感兴趣,因此会调用观察者,因为它首先启动了该更改。因此,观察者观察到的东西不可能“返回”到主程序中的某个位置。您必须考虑一种方法,将该名称/值数据中继到您程序中的某个实体,然后该实体可以执行任何应该执行的操作,主程序将必须查找它。是否有一种方法可以从Observer内部更新主变量?您可以使用visitor模式吗?查看一个很好的示例。
main
是一个方法名。其中声明的任何变量都有方法作用域和方法生存期,它们的引用可以通过调用其他方法来传递。可以使用传递给它的引用来创建观察者,它可以使用这些引用来修改对象