我正在努力将我的简单联系人应用程序从普通的JAVA FX重写为FXML。问题在于Lambda表达式。我有这样的界面:
interface ObjectCreator {
void create(String[] array);
}
问题出在我使用这个CSVFileReader的时候:
public static class CSVFileReader {
String fileName;
CSVFileReader(String fileName) {
this.fileName = fileName;
}
void read(ObjectCreator creator) {
try {
BufferedReader csv = new BufferedReader(new FileReader(fileName));
String row = csv.readLine();
while (row != null) {
creator.create(row.split(","));
row = csv.readLine();
}
csv.close();
} catch (IOException e) {
}
}
}
在此代码中,我使用lambda表达式从文件中读取联系人:
@FXML
public void openFile() {
FileChooser fileChooser = new FileChooser();
File fileE = fileChooser.showOpenDialog(scene.getWindow());
if (fileE != null) {
CSVFileReader reader = new CSVFileReader(fileE.getName());
data.clear();
reader.read(v ->
data.add(new Contact(v[0], v[1], v[2], v[3])));
}
System.out.println("open list");
}
我使用JDK 1.8.65这样安装新的。问题是没有错误或异常看起来像代码" v-> data.add(new Contact(v [0],v [1],v [2],v [3]))& #34;不会被调用。 问题是我做错了什么或它只是不工作?
答案 0 :(得分:0)
毫无疑问,在进一步研究我的应用程序后,我发现我正在服用
fileE.getName();
我应该
fileE.getAbsolutePath();
因此应用程序会查找文件的正确位置。