JavaFX中使用lambda表达式的方法

来源:爱站网时间:2022-06-30编辑:网友分享
JavaFX中使用lambda表达式的方法你知道是怎样的吗?带着这个问题,感兴趣的朋友不妨来看看爱站技术频道小编整理的以下相关资料,一定会对你有所帮助的。

问题描述


我正在学习JavaFx,因此我从使用JDBC的非常基本的数据库应用程序开始。我是一名网络开发人员,我来自Javascript和Typescript背景。我试图在单击按钮时调用方法。该方法将简单地在数据库中推送一条记录。我先给你看我的代码。

AddNewBranchRecord.java

public class AddNewBranchRecord {

    public static void askInitialDetails() {
        Scene scene;
        final Stage stage = new Stage();

        Button doneButton;
        ...

        doneButton = new Button("Done");
        doneButton.setOnAction(e -> {
            DataService dataservice = new DataService();
            dataservice.insertRecord();
        });

        ...

        stage.setTitle("INITIAL DETAILS");
        stage.setScene(scene);
        stage.showAndWait();
    }
}

这是将与oracle交互的数据服务类。

DataService.java

public class DataService {
    Connection con;
    Statement stmt;

    DataService() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","tiger","scott");
            stmt=con.createStatement();
        }
        catch(Exception e){ 
            System.out.println(e);
        }
    }

    public int insertRecord() {
        int success = 0;
        try {
            success=stmt.executeUpdate("insert into emp values(2, 'Tanzeel')");
        } catch (SQLException ex) {
            Logger.getLogger(DataService.class.getName()).log(Level.SEVERE, null, ex);
        }
        return success;
    }
}

但是当我按下Done按钮时,它给了我这个例外:

线程“ JavaFX应用程序线程”中的异常java.lang.NoSuchMethodError:tasktracker.DataService.insertRecord()Z

为什么我会收到此NoSuchMethod异常。如果我将此代码直接放在调用方类的构造函数中,则相同的代码也可以工作。是否有与synchronization相关的内容。我之所以这样想,是因为我来自Javascript和Typescript背景。我知道Java和JS是两种不同的语言。请指出我的错误。

我正在使用JDK 8

思路:


发生这种情况的唯一方法是如果DataService类是在没有addRecord()方法的情况下编译的,并且由于添加了addRecord()方法而没有重新编译。通常,编译器会确保这种情况不会发生(通过在编译DataService时自动重新编译AddNewBranchRecord),但似乎不同步。

您最好的选择是删除所有生成的类文件并重新编译源代码。您的IDE应该具有“清除”和“重建”项目的选项,分别完成这些步骤。

顺便说一句,您几乎肯定不希望每次用户按下按钮时都创建一个新的DataService(及其与数据库的连接):将调用移至lambda表达式之外的DataService构造函数(至少;您可能希望其范围更广)。

希望小编分享的JavaFX中使用lambda表达式的方法内容大家都看明白了,如果你需要深入了解java方面的知识点,可以随时来关注爱站技术频道网站。

上一篇:自定义启动器怎么支持快捷方式固定

下一篇:JAVA中怎么将两个小程序合并成为一个

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载