构造函数泄露this是什么意思有什么问题么
 public class Javahqx extends javax.swing.JLabel implements cantime {     static sLtime slt = sLtime.getsLtime();     public Javahqx() {
        super();
        slt.add("qqxx", 30, this);
    }

解决方案 »

  1.   

    add操作里可能有其它线程操作传进去的this,而此时,this还没有构建完整(因为构造方法还没执行完),这时就操作this可能就有问题
      

  2.   


    一般来说构造函数里面只完成对数据的初始化。至于其他的操作。在thinking in java里面。是不建议的。
      

  3.   

    java并发权威书籍《Java Concurrency in Practice》
      

  4.   

    slt 是共享变量,在多线程的环境下需要同步,即便在构造方法中。http://topic.csdn.net/u/20090102/21/a217b3f6-35ef-4e86-ab1c-f7d05e934ef3.html
      

  5.   

    构造函数只是用于初始化,进入构造函数之前,对象实例已经被创建了。对构造函数泄露this还真没明白?
      

  6.   

    呃 slt是单列的 内部以实现同步 现在是 netbeans提示 构造函数泄露this...
      

  7.   

    1、构造方法写一些初始化的东西,构造完对象后再执行其它操作。这样的写法比较“正规”了,比如放到init方法中。
    2、楼主的目的应该可能是,构造一个对象后,需要立刻将其在slt对象中进行一些维护;为防止多线程,可以对init方法进行同步化。
    synchronize init(){
    .....
    .....
    }
    它本身就是用this做为同步锁。
    只是一点最基本的方法,仅供参考。
      

  8.   


    +1在构造方法里,把this传给了其他对象(slt)的方法调用,也就是把this泄露给了外部