debugging - Java Flow of execution - overridden method gets executed first than the constructor -
i have following code, in same java file.
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 getselectedfile"); return null; } } when run it, output gives me
call getselectedfile
constructor call
call getselectedfile
shouldn't output be
constructor call
call getselectedfile
i'm using java 5.
myfilechooser's constructor equivalent to:
public myfilechooser() { super(); // *** system.out.println("constructor call"); } the first call getselectedfile() made myfilechooser's base class constructor, invoked implicitly @ point marked *** above, before system.out.println("constructor call").
here stack trace:
myfilechooser.getselectedfile() line: 16 aquafilechooserui.installcomponents(jfilechooser) line: 1436 aquafilechooserui.installui(jcomponent) line: 122 myfilechooser(jcomponent).setui(componentui) line: 670 myfilechooser(jfilechooser).updateui() line: 1798 myfilechooser(jfilechooser).setup(filesystemview) line: 360 myfilechooser(jfilechooser).<init>(file, filesystemview) line: 333 myfilechooser(jfilechooser).<init>() line: 286 myfilechooser.<init>() line: 11
Comments
Post a Comment