5 回答

TA貢獻1818條經(jīng)驗 獲得超3個贊
有多種方法可以從方法中重新調(diào)整多個值,我使用的一些最佳方法是:
1-為要返回的數(shù)據(jù)類型創(chuàng)建類,例如,您要返回兩個字符串,使類如下所示:
public class myType {
String a;
String b;
public String getA() {
return a;
}
public void setA(String _a) {
a = _a;
}
//And All other geter setters
}
并將您的方法的返回類型設(shè)置為上述類。
2- 使用鍵值對返回 Map
3- 制作接口并從要返回值的位置調(diào)用抽象方法(您必須在要接收值的類中實現(xiàn)接口)希望這會給您一個粗略的想法前進

TA貢獻1864條經(jīng)驗 獲得超6個贊
您可以按如下方式創(chuàng)建自定義 java 對象
public class Result {
private boolean success;
private int totalResults;
public Result(boolean success, int totalResults){
this.success = success;
this.totalResults = totalResults;
}
public boolean getSuccess(){
return this.success;
}
public boolean getTotalResults(){
return this.totalResults;
}
}

TA貢獻1833條經(jīng)驗 獲得超4個贊
我想any[1]用來模擬指針。像 C++*p和 C# out。
boolean[] p_status = new boolean[1];
int count = retrieveData(p_status);
boolean status = p_status[0];
其他樣品,能量:
public static void main(String[] args) throws JsonProcessingException {
// I try to analysis the string, but don't want to create a new class
var strs = "1,2,ABC,3,4,6,7,1,6,9,XYZ,3,6,3,7,9,2,5,9,ABC";
// use any[1] as pointer
int[] p_iStrCount = new int[1];
// when facing eneric, it's a little different
@SuppressWarnings("unchecked") HashMap<Integer, Integer>[] p_hmNum = new HashMap[1];
// use pointer as parameters, so I can get multiple results out
var hmStr = analysis(strs, p_iStrCount, p_hmNum);
var iStrCount = p_iStrCount[0];
var hmNum = p_hmNum[0];
}
// `strs` as input
// `pOut_iStrCount`, `pOut_hmNum`, `return` as output
// You can ignore the details of this method
static HashMap<String, Integer> analysis(@NotNull String strs, @Nullable int[] pOut_iStrCount, @Nullable HashMap<Integer, Integer>[] pOut_hmNum){
var aryStr = StringUtils.split(strs, ",");
var iStrCount = null != aryStr ? aryStr.length : 0;
var hmStr = new HashMap<String, Integer>();
var hmNum = new HashMap<Integer, Integer>();
if(null != aryStr){
for(String str : aryStr){
hmStr.compute(str, (k,v)->(null == v ? 0 : v + 1));
int num;
try{
num = Integer.parseInt(str);
}catch (NumberFormatException ignore){
continue;
}
hmNum.compute(num, (k,v)->(null == v ? 0 : v + 1));
}
}
if(null != pOut_iStrCount){ pOut_iStrCount[1] = iStrCount; }
if(null != pOut_hmNum){ pOut_hmNum[1] = hmNum; }
return hmStr;
}

TA貢獻1808條經(jīng)驗 獲得超4個贊
我建議堅持您當(dāng)前的一般方法,而不是嘗試從您的方法中返回兩條信息。您的方法簽名會引發(fā)異常,處理此問題的一種可能方法是讓您的方法在出現(xiàn)問題時引發(fā)異常。否則,這意味著計數(shù)查詢確實運行了,并且會返回一些計數(shù)。但是,您可能應(yīng)該在 JDBC 代碼周圍有一個 try catch 塊:
public static int retrieveData(Connection conn) throws Exception {
Statement stmt = null;
int totalCount = 0;
try {
String query = "SELECT COUNT(*) FROM Account";
ResultSet rsRetrieve;
stmt = conn.createStatement();
rsRetrieve = stmt.executeQuery(query);
if (rsRetrieve.next()) {
totalCount = rsRetrieve.getInt(1);
System.out.println("totalCount : " + totalCount);
}
}
catch (SQLException e) {
System.out.println(e.getMessage());
threw new Exception("something went wrong");
}
finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return totalCount;
}
所以這里使用的模式是,如果出現(xiàn)問題,則沒有計數(shù),調(diào)用者會收到異常。否則,如果沒有發(fā)生異常,則返回一些計數(shù)。

TA貢獻1851條經(jīng)驗 獲得超4個贊
你不能,但你可以創(chuàng)建一個 bean 類來保存多個對象。
如果這是用于程序錯誤處理,您可能需要查看 Optional (standard) 或 Either (vavr) 來處理多個結(jié)果
添加回答
舉報