Java中的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) {

我正在将我的simple Contacts应用程序从普通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");
}
我使用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])”不会被调用。