我正在开发一个任务管理日历应用程序,它将数据存储在数据库中,我遇到了这个问题。我有一个创建主swing应用程序的main_app类。它还创建一个CalendarDao(数据访问对象)对象,用于管理MySQL查询、更新等。
现在,如果CalendarDao出错,我想显示错误对话框消息。因此,当我创建dao对象时,我必须给它一个对主应用程序的引用。但是我想保持dao类的通用性,并且能够在不引用jframe子类的情况下使用它。所以,我创建了重载构造函数,一个使用jframes子类作为参数,另一个不使用(主类)。现在,当我调用接受jframe对象的构造函数时,我还想调用主构造函数,所以我这样定义它:

private MainApp mApp;

public calendarDAO(MainApp mAppRef){
    try{
        this();
    } catch (Exception e){e.printStackTrace();}

     mApp = mAppRef;
    }

问题是,这不起作用,因为我的主构造函数抛出了异常,所以我必须将它放在try块中,现在我得到一个错误,说
构造函数调用必须是构造函数中的第一个语句
这样的问题怎么解决?我的软件设计/结构是否错误?帮忙?

最佳答案

应该抛出将从两个构造函数引发的异常

private MainApp mApp;

public calendarDAO(MainApp mAppRef) throws SomeExplicitException{
     this();
     mApp = mAppRef;
}

如果您能够处理异常,那么您应该按照madprogrammer的建议,创建一个工厂方法来创建您的对象

07-25 23:25
查看更多