Java字符串返回方法不返回
我有一个方法返回文件夹路径的字符串。CSVFile方法调用另一个方法ConfigFilePath以从配置文件中提取值,并将其返回以用于其他条件
public CSVFile(ManagedElement_T[] meInfo) {
String path = null;
ConfigFilePath(path);
system.out.print("CSV "+path);
}
public String ConfigFilePath(String path) {
final String directory = System.getProperty("user.dir");
final String filename = "config.properties";
final File configFile = new File(directory+"/"+filename);
final Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream(configFile);
prop.load(input);
path = prop.getProperty("diretory_csv");
System.out.println("PATH " + path);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
// Close the file
}
File checkPath = new File(path.toString());
System.out.println("CHECK " + checkPath);
if (checkPath.exists()) {
System.out.println("Directory already exists ...");
} else {
//mkdir if it does not exist
}
return path;
}
问题是,它不返回任何var路径?打印时只会说null,但在ConfigFilePath方法中,它似乎是根据eclipse中的打印获得正确的值
System.out.println("PATH " + path); = C:/opt/CORBA/input
System.out.println("CHECK " + checkPath); = C:\opt\CORBA\input
System.out.print("CSV "+path); = null
# 1 楼答案
方法
ConfigFilePath
是返回一个值。必须将该返回值赋给变量path
:注意:尝试遵循Java命名约定。方法/变量使用
mixedCase
,类/接口使用CamelCase
# 2 楼答案
ConfigFilePath正在返回一个值。您应该从中获取结果并将其放入路径:
# 3 楼答案
Java实际上是
pass by value
而不是pass by reference
因此,当您在此处初始化它时:
路径实际上不会
reference
该值,但在out of scope
时会被销毁解决方案:
获取
ConfigFilePath
方法的返回值# 4 楼答案
您面临的问题是java是通过值传递方法参数,而不是通过引用传递方法参数。这可能会令人困惑,因为在使用对象类型时,传递的值实际上是一个对象引用
让我们看一下您的一些代码行:
在这里,您的方法被传递到某个
String
的引用,并将其保存在名为path
的局部变量中现在将局部变量
path
更改为指向一个新的String
-对象这是将引用作为返回值传递出去
ConfigFilePath
的局部path
-变量超出范围正如其他答案所说:在这一行中,您调用的方法传递对
String
的引用,该引用由CSVFile
的局部path
变量引用。但是由于传递是按值传递的,因此方法调用不会更改此path
-变量。您的结果通过return
-value传递,您将忽略该值,而不是将其分配给path
-variable总而言之:
ConfigFilePath()
不需要参数,因为它没有使用传入的值