从Java中的void方法返回值

时间:2012-05-16 14:15:46

标签: java

我有一个方法:

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

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

PS:我需要dbQuery()的值,因此我可以构建另一个query来再次呼叫dbQuery()

6 个答案:

答案 0 :(得分:9)

  

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

“虚空的回归”是什么意思?如果你的意思是“返回值”,那么不是一个 - 这就是方法被声明为void的点。

如果你想要返回一个值,那么不要把它变成一个void方法...给出这个:

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

您似乎只想更改dbQuery以返回String。请注意,如果what 不是 temp_table,您需要确定要返回的内容。 (你还应该修复你的异常处理 - 只需将堆栈跟踪打印到stdout然后继续,不管几乎从不正确的方法。)

答案 1 :(得分:1)

你可以让你的方法不是空的,并且有一个返回类型,那么你可以拥有行

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

将输出:

  

开始
  startend

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我会创建你的方法字符串而不是bool。 Void不会返回任何东西。

答案 4 :(得分:0)

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

答案 5 :(得分: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替换为整数

即可
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

}

并添加返回值