[英]Returning a value from a void method in 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()
如何获得void的返回值以在另一个db.dbQuery()中使用它?
“虚空的回归”是什么意思? 如果您的意思是“返回值”,那么就没有一个-这就是方法声明为void
。
如果您想返回一个值,则不要将其设为空方法...鉴于此:
String temporary_table = db.dbQuery(query,"temp_table");
看起来您只想更改dbQuery
以返回String
。 请注意,你需要制定出如何返回,如果what
不 temp_table
。 (您还应该修复异常处理-只是将堆栈跟踪信息打印到stdout,然后继续执行,而这几乎从来都不是正确的方法。)
您可以使方法不为空,并具有返回类型,然后可以使行
return 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());
将具有以下输出:
开始
开始
您不能从定义为void
的方法返回值-按照定义,这意味着它不返回任何值。
如果您看到return;
声明在void
方法中,基本上意味着这将结束当前方法并将处理返回给调用方。
我会让您的方法字符串而不是布尔。 虚空不会返回任何东西。
void方法是什么都不返回的东西。 但是,您的需求似乎必须在上一层中使用此方法生成的值。 一种明显的解决方案是将其返回类型从void更改为String。 但是,如果您不想这样做,只需将一个字符串参数再传递给您的方法即可。 字符串是一个对象,因此在将其传递给方法时,实际上是在将该对象的引用传递给它。 只需在该字符串中设置您生成的值,您就可以使用该字符串变量在上一层中访问它(这有点类似于C中的按引用传递)。 我希望这种解决方法能够解决您的问题。 如果我错了,请纠正我。
实际上,他希望在VB中具有类似的功能。 首先,照常创建您的空隙。
private Void getheightoflistview(ListView nameOfListView){
//do whatever you want to do
int numberOfItems = nameOfListView.getCount();
//You want to return the numberOfItems
}
因此,如果要返回整数值,只需将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
}
并添加返回值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.