Java 如何从其他类返回文件?仅返回空值
我正在尝试返回用户选择的文件。那很好。我可以在openFile中检查fileToOpen,它是100%正确的,但是当我在main方法中sysout它时,我只得到null。我想要用户选择的路径 这是主要课程:Java 如何从其他类返回文件?仅返回空值,java,swing,file,jfilechooser,Java,Swing,File,Jfilechooser,我正在尝试返回用户选择的文件。那很好。我可以在openFile中检查fileToOpen,它是100%正确的,但是当我在main方法中sysout它时,我只得到null。我想要用户选择的路径 这是主要课程: public class Main { public static void main(String[] args) { File fileToOpen = null; ReadIn openLog = new ReadIn();
public class Main {
public static void main(String[] args) {
File fileToOpen = null;
ReadIn openLog = new ReadIn();
openLog.openFile(fileToOpen);
System.out.println(fileToOpen);
}
}
这是ReadIn类:
public class ReadIn extends JFrame{
public File openFile(File fileToOpen){
final JFileChooser fileChooser = new JFileChooser();
int modalToComponent=fileChooser.showOpenDialog(this);
if (modalToComponent == JFileChooser.APPROVE_OPTION) {
fileToOpen = fileChooser.getSelectedFile();
}
return fileToOpen;
}
}
您的代码期望
openFile
方法能够进入调用方法并修改其局部变量之一。它不能做到这一点,它不是Java has1的特性(也不是解决这个问题的有用方法)
您的方法已返回文件
。只需删除参数并使其成为局部变量:
public File openFile(/*no argument here*/){
File fileToOpen; // Local variable
final JFileChooser fileChooser = new JFileChooser();
int modalToComponent=fileChooser.showOpenDialog(this);
if (modalToComponent == JFileChooser.APPROVE_OPTION) {
fileToOpen = fileChooser.getSelectedFile();
}
return fileToOpen;
}
然后在使用时,使用返回值:
public static void main(String[] args) {
File fileToOpen = null;
ReadIn openLog = new ReadIn();
fileToOpen = openLog.openFile(); // ***
System.out.println(fileToOpen);
}
1如果您感兴趣,该功能称为“按引用传递”,这意味着“将对变量的引用传递到方法/函数中”。Java从不这样做,它总是将变量的值传递到方法(以及类似方法的东西,如构造函数)(“按值传递”)。更多信息:您的代码希望
openFile
方法能够进入调用方法并修改其一个局部变量。它不能做到这一点,它不是Java has1的特性(也不是解决这个问题的有用方法)
您的方法已返回文件
。只需删除参数并使其成为局部变量:
public File openFile(/*no argument here*/){
File fileToOpen; // Local variable
final JFileChooser fileChooser = new JFileChooser();
int modalToComponent=fileChooser.showOpenDialog(this);
if (modalToComponent == JFileChooser.APPROVE_OPTION) {
fileToOpen = fileChooser.getSelectedFile();
}
return fileToOpen;
}
然后在使用时,使用返回值:
public static void main(String[] args) {
File fileToOpen = null;
ReadIn openLog = new ReadIn();
fileToOpen = openLog.openFile(); // ***
System.out.println(fileToOpen);
}
1如果您感兴趣,该功能称为“按引用传递”,这意味着“将对变量的引用传递到方法/函数中”。Java从不这样做,它总是将变量的值传递到方法(以及类似方法的东西,如构造函数)(“按值传递”)。更多: