Let's assume that I'm extending a graphical file chooser class (JFileChooser
).
This class has methods which display the file chooser dialog and return a status signature in the form of an int
: APPROVE_OPTION
if the user selects a file and hits Open /Save, CANCEL_OPTION
if the user hits Cancel, and ERROR_OPTION
if something goes wrong. These methods are called showDialog()
.
I find this cumbersome, so I decide to make another method that returns a File
object: in the case of APPROVE_OPTION
, it returns the file selected by the user; otherwise, it returns null
. This is where I run into a problem: would it be okay for me to keep the showDialog()
name, even though methods with that name — and a different return type — already exist? To top it off, my method takes an additional parameter: a File
which denotes in which directory the file chooser should start.
My question to you: Is it okay to call a method the same name as a superclass method if they return different types? Or would that be confusing to API users? (If so, what other name could I use?)
Alternatively, should I keep the name and change the return type so it matches that of the other methods?
public int showDialog(Component parent, String approveButtonText) // Superclass method
public File showDialog(Component parent, File location) // My method