【发布时间】:2019-05-02 22:43:59
【问题描述】:
我只是想知道是否有任何方法可以回收在同级类中重复的 Java 方法,因为它们需要特定的对象。
我们来看一个例子:
public void refreshSearch(){
try{
String search = bookDialog.getTxtBrowser().getText();
bookBusiness.searchByString(search, bookDialog
.selectedItemToString(bookDialog.getCmbBrowser()));
bookDialog.getTbBooks()
.setModel(new BookTableView(bookBusiness));
setBookTableTitles();
}
catch(SQLException ex){System.out.print(ex);}
}
然后:
public void refreshSearch(){
try{
String search = studentDialog.getTxtBrowser().getText();
studentBusiness.searchByString(search, studentDialog
.selectedItemToString(studentDialog.getCmbBrowser()));
studentDialog.getTbStudents()
.setModel(new StudentTableView(studentBusiness));
setStudentTableTitles();
}
catch(SQLException ex){System.out.println(ex);}
}
这里的重点是我有两个相等的方法,只是因为它们需要一个特定的对象类型。
我想到的解决方案是接收一个通用的 Object 参数,然后检查类并创建相应的实例,但是如果这个方法被三个不同的类使用,我必须创建六个对象,并且只有两个其中将被使用(其他四个将为空)。因此,我必须为每个对象创建一个长结构。
Java 中有什么方法可以解决这个问题吗?
非常感谢!
【问题讨论】:
-
也许您可以使用模板模式,例如
getDialog().getTxtBrowser().getText(),其中 getDialog 是一个抽象方法,在子类中被重写以返回正确类型的对象。 -
这当然可以完成,但额外的代码需要维护的工作量远远超过将这四个自定义行复制到每个类中。有时,尤其是短代码,重复是更好的选择。