需要在一个单例模式类里初始化另外一个类,只是让另外一个类初始化,不做任何操作,请问用new方式而不赋给另外一个值,会不会造成单例模式类永久持有新new的类?大家只需要初始化一个类而不用操作都是怎么做的呢?谢谢啦!
[code="java"]
public class TestA {
private static Test instance;
private TestA {
[color=red]new TestB(); //这里[/color]
}
public static TestA getInstance() {
if(instance == null) {
instance = new TestA();
}
return instance;
}
}
class TestB {
public TestB {
//blablabla
}
}
[/code]
[quote]
只是要通过类B初始化一些环境
[/quote]
如果你只是想通过new testB() 来初始化一些所谓的环境变量(这个变量最好不是在b中的,而是在系统中的)那是可以的,但是单例类并不会持有改对象。
:o 不操作模拟初始化做什么。申明不就行了。等到要操作的时候再初始化。
这个是有问题的,
[quote]private TestA {
new TestB(); //这里[/color]
} [/quote]
这里是一个匿名变量,这句执行完之后该对象即被垃圾回收了,
可以这个样子:
[code="java"]
private static TestB testB = new TestB();
[/code]
这样就可以永久持有了。
“需要类B初始化一些环境,并不需要对它操作。” :o
那更不明白了。
new 能初始化B。但是你又想在内存中B对象不要一直存在?而B的环境存在?不知道是不是?
[code="java"]public class TestA {
private static final Test instance=new TestA();
private TestA {
new TestB(); // 单例类不会持有新new的类
}
public static TestA getInstance() {
return instance;
}
} [/code]
:o 那你把那些赋值写到static 方法,这边调一下不就行了。