Java 方法不返回字符串

Java method not returning string

public static void searchLabel(String word) {
    String uri = null;
    String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
    System.out.println(sparqlQueryString1);
    executeQuery(sparqlQueryString1);
    System.out.println(uri);

    getType(uri);
}

public static String executeQuery(String sparqlQuerystring1){
    String uri = null;
    Query query = QueryFactory.create(sparqlQuerystring1);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    ResultSet results = qexec.execSelect();
    //ORGINEEL ResultSetFormatter.out(System.out, results, query);       
    //ALS RDF ResultSetFormatter.outputAsRDF("", results);    
   // ResultSetFormatter.outputAsJSON(results);
    if (results.hasNext()) {
         uri = results.next().get("x").toString();
      }
    qexec.close() ;
    System.out.println(uri);
    return uri;
}

在第一种方法中,我正在执行 executeQuery。在 executeQuery 中,我尝试 return "uri" 并在 searchLabel 方法中再次打印它,但它 returns "null"。它正在打印 executeQuery 方法,就在 returning uri 之前。

我猜这与我在 searchLabel 方法中将 uri 定义为 null 这一事实有关。但是,如果我删除它,我将无法执行脚本(uri 无法解析为变量)

uri = executeQuery(sparqlQueryString1);

在第一种方法中你...

  1. 声明 uri 并用 null 初始化它。
  2. 创建查询字符串
  3. 打印出来
  4. 通过第二种方法执行查询,这可能会或可能不会 return 结果不是 null
  5. 打印出 uri,它仍然是 null,因为你从未给它赋值
  6. 调用getType( null ),因为uri还是null

因此,假设您的第二种方法实际上 return 是一个结果,您必须将 return 值分配给第一种方法中的 uri 变量。请记住,第一个方法中的变量 uri 与第二个方法中的变量 uri 无关。他们只是碰巧有相同的名字,但他们既不相关也不相同。

您应该将 return 从 executeQuery 分配给 uri 变量...

    String uri = null;
    String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
    System.out.println(sparqlQueryString1);
    uri = executeQuery(sparqlQueryString1);
    System.out.println(uri);