[英]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.