Mam następujący kod, w tym samym pliku java.Java Flow of execution - nadpisywana metoda jest wykonywana najpierw niż 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;
}
}
Kiedy go uruchomić, wyjście daje mi
call to getSelectedFile
constructor call
call to getSelectedFile
Gdyby nie wyjście być
constructor call
call to getSelectedFile
Używam java 5.
Gdzie jest wezwanie do getSelectedFile? –
Moja zła, właściwie w moim oryginalnym kodzie, nazywam to zwykłym sposobem, po utworzeniu MyFileChooser. Ale jak widzisz, nawet jeśli nie robię jednoznacznego połączenia z 'getSelectedFile'. Zaktualizuję mój kod. – Bnrdo
nigdy nie musisz wywoływać 'getSelectedFile', to wywołanie wewnątrz 'JFileChooser' kiedy wybierzesz plik –