0

我有一个方法:

public void dbQuery(String query, String what) {
    try {
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(query);

        if(what.equals("temp_table")) {
            String temporary_table = rs.getString("table_name_temp");
            System.out.println(temporary_table);
            return;
        }

        }

    catch (Exception e) {
        e.printStackTrace();
        }

    finally {
        if (rs != null) rs.close();
        if (stmt != null) stmt.close();
        }

}



String query = "EXEC temptables.dbo.create_temp_cdr 'SIP'";
String temporary_table = db.dbQuery(query,"temp_table");

我如何获得 a 的回报void以在另一个中使用它db.dbQuery()

PS:我需要一个值,dbQuery()这样我就可以构造另一个来再次query调用dbQuery()

4

6 回答 6

9

如何获得 void 返回以在另一个 db.dbQuery() 中使用它?

你说的“回归虚无”是什么意思?如果您的意思是“返回值”,那么没有一个 - 这就是方法被声明为void.

如果你返回一个值,那么不要让它成为一个 void 方法......鉴于此:

String temporary_table = db.dbQuery(query,"temp_table");

看起来您只想更改dbQuery为 return Stringwhat 请注意,如果不是 ,您需要确定要返回的内容temp_table。(您还应该修复您的异常处理 - 只是将堆栈跟踪打印到标准输出然后继续不管这几乎从来都不是正确的方法。)

于 2012-05-16T14:16:56.357 回答
2

你可以让你的方法不是无效的,并且有一个返回类型,然后你可以有这条线

return temporary_table;

这将返回temporary_table 变量。

另一种方法是通过引用该方法。例如,您可以将 StringBuilder 对象传递给该方法。方法中对该对象的任何更改也将在方法返回后应用。

public void addToString(StringBuilder query, String toAdd) {
    query.append(toAdd);
}

调用此方法

StringBuilder query = new StringBuilder("start");
System.out.println(query.toString());
addToString(query, "end");
System.out.println(query.toString());

将有以下输出:

开始
开始

于 2012-05-16T15:06:51.060 回答
0

void 方法是不返回任何内容的方法。但是,您的要求似乎必须在上一层使用此方法中生成的值。一个明显的解决方案是将其返回类型从 void 更改为 String。但是,如果您不想这样做,只需将一个字符串参数传递给您的方法。String 是一个对象,因此当您将它传递给一个方法时,实际上是将该对象的引用传递给它。只需在此字符串中设置您生成的值,您就可以使用该字符串变量在上一层访问它(它有点类似于 C 中的通过引用传递)。我希望这个解决方法能解决你的问题。如果我错了,请纠正我。

于 2012-05-16T19:08:43.157 回答
0

您不能从定义为的方法返回值void- 根据定义,这意味着它不返回任何值。

如果你return;在方法中看到一条语句void,基本上意味着这将结束当前方法并将处理返回给调用者。

于 2012-05-16T14:19:20.527 回答
0

我会让你的方法字符串而不是布尔值。Void 永远不会返回任何东西。

于 2012-05-16T14:19:59.033 回答
0

事实上,他希望在 VB 中拥有类似的功能。首先,像往常一样创造你的空虚。

private  Void getheightoflistview(ListView nameOfListView){
   //do whatever you want to do
    int numberOfItems = nameOfListView.getCount();
    //You want to return the numberOfItems 
}

所以如果你想返回一个 Integer 值,只需将 Void 替换为 Integer

private  Integer getheightoflistview(ListView nameOfListView){
   //do whatever you want to do
    int numberOfItems = nameOfListView.getCount();
    //You want to return the numberOfItems 
    return numberOfItems; //this is the Integer you want to return

}

并添加返回值

于 2016-10-18T13:00:05.480 回答