interface - java.lang.StackOverflowError while calling a method -


i learning interface behavior. have created interface , implementer class, while calling method m1() got java.lang.stackoverflowerror. dont know why. can tell me proper reason behind !!!!!! here code :

public interface employee {      string name="kavi temre"; }  public class kavi implements employee{     employee e= new kavi();     public static void main(string[] args) {          kavi kt=new kavi();         kt.m1();     }      void m1()     {         system.out.println(employee.name);         //system.out.println(e.name);     } } 

both sysout give same error : please tell me going on here ??

console output:

exception in thread "main" java.lang.stackoverflowerror     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     @ kavi.<init>(kavi.java:2)     ..... 

when call

kavi kt=new kavi(); 

it initializes e member :

employee e = new kavi(); 

which initializes own e member, gives infinite chain of calls kavi constructor. hence stackoverflowerror.

it's equivalent :

employee e; public kavi () {     e = new kavi(); } 

a constructor shouldn't call in infinite loop.

removing employee e = new kavi() line solve issue. if class must hold reference employee, consider passing constructor :

public kavi () {     this.e = null; }  public kavi (employee e) {     this.e = e; }  public static void main(string[] args) {      employee e = new kavi ();     kavi kt=new kavi(e);     ... } 

an alternative solution change :

employee e = new kavi(); 

to

static employee e = new kavi(); 

that valid solution if instances of kavi share same employee instance referred e.


Comments

Popular posts from this blog

jquery - How do you format the date used in the popover widget title of FullCalendar? -

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -