Ich habe den folgenden Code, in der gleichen Java-Datei.Java Ablauf der Ausführung - überschriebene Methode wird zuerst ausgeführt als der Konstruktor
import javax.swing.SwingUtilities;
import java.io.File;
public class MainClass2{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run() {
javax.swing.JFileChooser jfc = new MyFileChooser();
File file = jfc.getSelectedFile();
}
});
}
}
class MyFileChooser extends javax.swing.JFileChooser{
public MyFileChooser(){
System.out.println("constructor call");
}
@Override
public java.io.File getSelectedFile(){
System.out.println("call to getSelectedFile");
return null;
}
}
Wenn ich es laufen, gibt der Ausgang mich
call to getSelectedFile
constructor call
call to getSelectedFile
Sollte nicht der Ausgang sein
constructor call
call to getSelectedFile
ich Java 5.
bin mit 'ist Konstruktor entspricht:public MyFileChooser() {
super(); // ***
System.out.println("constructor call");
}
Der erste Aufruf von getSelectedFile()
von MyFileChooser
gemacht wird'
Wo wird Ihr Anruf an getSelectedFile? –
Meine schlechte, eigentlich in meinem ursprünglichen Code, ich rufe es den üblichen Weg, nach der Instantiierung von MyFileChooser. Aber wie du sehen kannst, auch wenn ich keinen expliziten Aufruf von 'getSelectedFile' mache. Ich werde meinen Code aktualisieren. – Bnrdo
Sie müssen niemals 'getSelectedFile' aufrufen, dies ruft innerhalb von 'JFileChooser' auf, wenn Sie die Datei –