构造函数中创建线程并没有错误,但最好不要立即启动它,而是通过一个start或initial方法启动。
若果想要在构造函数中注册一个事件监听器或启动线程,那么可以使用一个私有的构造函数和一个公共的工厂方法,从而避免不正确的构造过程。
public class SafeListener {
private final EventListener listener;private SafeListener(){
listener = new EventListener(){
public void onEvent(Event e){
doSomething(e);
}
};
}
public static SafeListener newInstance(EventSource source){
SafeListener safe = ne SafeListener();
source.registerListener(safe.listener);
return safe;
}
}