Nit*_*gla 6 java stack-overflow
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");
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我有一个简单的类和一个类级实例,我也有一个同名的本地实例.运行上面的代码时,我得到以下异常:
Exception in thread "main" java.lang.StackOverflowError
at com.java8.Cloning.<init>(Cloning.java:6)
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 23
您的main方法创建一个Cloninginstance(Cloning c=new Cloning();),它会导致实例变量c(Cloning c=new Cloning();)的初始化,从而创建另一个Cloning实例,依此类推......
你有一个无限的构造函数调用链,这导致了StackOverflowError.
在上面的代码中,我有一个简单的类和一个类级实例
您没有类级别实例.您有一个实例级实例.如果需要类级实例,请更改
Cloning c=new Cloning();
Run Code Online (Sandbox Code Playgroud)
至
static Cloning c=new Cloning();
Run Code Online (Sandbox Code Playgroud)
没有你的意思写static Cloning c = new Cloning(); 外面 main,或 c = new Cloning(); 内 main呢?
否则,c每次运行时都会得到一个新实例,这将导致a StackOverflowError.
目前本地的创作c中Cloning c = new Cloning();(其中阴影场c)踢了整个事情了.
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |