返回信息流class Singleton
{
private Singleton(){}
private static Singleton instance=new Singleton();
private Singleton instance2=new Singleton();
public static Singleton getInstance()
{
return instance;
}
}
public class Test {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1==s2);
}
}
这段代码为什么会显示Exception in thread "main" java.lang.StackOverflowError呢?
[ema13][ema13][ema13]
这是一条镜像帖。来源:北邮人论坛 / java / #41573同步于 2015/6/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]学习java遇到的问题
wobudong
2015/6/11镜像同步23 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
跟单例没关系。
看看这个吧
class Singleton
{
public Singleton(){}
private Singleton instance2=new Singleton();
}
public class SingletonTest {
public static void main(String[] args) {
Singleton s1=new Singleton();
}
}
我说说我的理解,你在Singleton s1=new Singleton();时
1. new Singleton() 创建了一个Singleton 对象,
2. 当初始化Singleton 对象时需要对成员变量进行初始化,会执行private Singleton instance2=new Singleton();
3. 转到1
要想明白什么是递归,就要先知道什么是递归。
个人理解,错了的话请及时告诉。
【 在 Monologue 的大作中提到: 】
: 跟单例没关系。
: 看看这个吧
: [code=java]
: ...................
没看懂你说的什么意思,没有递归吧,不就是构造函数吗,而且你的构造函数是公共的,和楼主的不一样,感觉楼主的意思就是单例模式。。[ema13]
错误的原因不在单例啊
【 在 dongqing 的大作中提到: 】
: 没看懂你说的什么意思,没有递归吧,不就是构造函数吗,而且你的构造函数是公共的,和楼主的不一样,感觉楼主的意思就是单例模式。。