Java中的FXML和lambda表达式不工作?
我正在将我的simple Contacts应用程序从普通JAVA FX重写为FXML。问题在于Lambda表达式。我有如下界面:Java中的FXML和lambda表达式不工作?,java,javafx,lambda,java-8,Java,Javafx,Lambda,Java 8,我正在将我的simple Contacts应用程序从普通JAVA FX重写为FXML。问题在于Lambda表达式。我有如下界面: interface ObjectCreator { void create(String[] array); } 问题是当我使用这个CSVFileReader时: public static class CSVFileReader { String fileName; CSVFileReader(String fileName) {
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");
}
我使用JDK1.8.65,所以需要一个新的。问题是并没有错误或异常,就像代码“v->data.add(新联系人(v[0]、v[1]、v[2]、v[3])”不会被调用一样。
问题是我是做错了什么,还是它只是不起作用了?好的,没问题,在进一步研究我的应用程序后,我发现我正在使用它
fileE.getName();
而我应该
fileE.getAbsolutePath();
因此,应用程序将在适当的位置查找文件。您需要更具体地说明您所面临的问题(是什么让您认为它不起作用?)。您是否得到编译错误、运行时异常或可能不正确的结果?很抱歉,您是对的,问题是没有从类似3条记录的文件中读取结果。没有错误或异常,只是看起来代码“v->data.add(新联系人(v[0]、v[1]、v[2]、v[3])”不会被调用。