【发布时间】:2015-12-22 21:39:52
【问题描述】:
我正在将我的简单联系人应用程序从普通的 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]))”不会被调用. 问题是我做错了什么还是无法正常工作??
【问题讨论】:
-
您需要更具体地说明您面临的问题(是什么让您认为它不起作用?)。您是否收到编译错误、运行时异常或不正确的结果?
-
对不起,你是对的,问题是没有从文件中读取任何结果,比如 3 条记录。并且没有错误或异常,只是看起来不会调用代码“v -> data.add(new Contact(v[0], v[1], v[2], v[3]))”。