public class Cloning {
Cloning c=new Cloning();
public static void main(String[] args) {
Cloning c=new Cloning();
c.print();
}
public void print(){
System.out.println("I am in print");
}
}
In the above code I have a simple class and a class level instance, I also have a local instance with the same name. When running the above code I get below exception :
Exception in thread "main" java.lang.StackOverflowError
at com.java8.Cloning.<init>(Cloning.java:6)
Your main method creates a Cloning
instance (Cloning c=new Cloning();
), which causes the initialization of the instance variable c
(Cloning c=new Cloning();
), which creates another Cloning
instance, and so on...
You have an infinite chain of constructor calls, which leads to StackOverflowError
.
In the above code I have a simple class and a class level instance
You don't have a class level instance. You have an instance level instance. If you want a class level instance, change
Cloning c=new Cloning();
to
static Cloning c=new Cloning();