我有一个用 java 编写的程序,用于返回值表。后来,随着该程序功能的增长,我发现我想访问方法中未返回的变量,但我不确定最好的方法。我知道您不能返回多个值,但是如果不进行重大修改,我将如何访问该变量呢? 这是我的代码的简化版本:
public class Reader {
public String[][] fluidigmReader(String cllmp) throws IOException {
//read in a file
while ((inpt = br.readLine()) != null) {
if (!inpt.equals("Calls")) {
continue;
}
break;
}
br.readLine();
inpt = br.readLine();
//set up parse parse parameters and parse
prse = inpt.split(dlmcma, -1);
while ((inpt = br.readLine()) != null) {
buffed.add(inpt);
}
int lncnt = 0;
String tbl[][] = new String[buffed.size()][rssnps.size()];
for (int s = 0; s < buffed.size(); s++) {
prse = buffed.get(s).split(dlmcma);
//turns out I want this smpls ArrayList elsewhere
smpls.add(prse[1]);
//making the table to search through
for (int m = 0; m < prse.length; m++) {
tbl[lncnt][m] = prse[m];
}
lncnt++;
}
//but I return just the tbl here
return tbl;
}
任何人都可以推荐一种在另一个类中使用 smpls 而不返回它的方法吗?这可能是当您使用 get/set 类型的设置时吗? 抱歉,如果这看起来是一个显而易见的问题,我对模块化编程世界仍然很陌生
最佳答案
现在你就有了这个tbl
变量。将其包装在一个类中并将列表添加到该类中。
class TableWrapper {
// default accessing for illustrative purposes -
// setters and getters are a good idea
String[][] table;
List<String> samples;
TableWrapper(String[][] table, List<String> samples) {
this.table = table;
this.samples = samples;
}
}
然后重构您的方法以返回包装器对象。
public TableWrapper fluidigmReader(String cllmp) throws IOException {
// your code here
String tbl[][] = new String[buffed.size()][rssnps.size()];
TableWrapper tw = new TableWrapper(tbl,smpls);
// more of your code
return tw;
}
然后在你的代码中你要去的地方
String[][] tbl = fluidigmReader(cllmp);
你应该去
TableWrapper tw = fluidigmReader(cllmp);
String[][] tbl = tw.table;
List<String> smpls = tw.samples;
关于java - java方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146322/