一个简单的例子 
2个构造函数共享了 一片代码
            if (_size >> 10 == 0) {
                this.buffer = new long[1];
            } else {
                this.buffer = new long[_size >> 10];
            }
我想在第二个构造函数 else 语句忠直接调用 第一个构造函数 而不是重新复制粘贴代码
    public BitSet(int _size) {
        if (_size >> 10 == 0) {
            this.buffer = new long[1];
        } else {
            this.buffer = new long[_size >> 10];
        }
    }    public BitSet(int _size, boolean buffer_size) {
        if (buffer_size) {
            this.buffer = new long[_size];
        } else {
            if (_size >> 10 == 0) {
                this.buffer = new long[1];
            } else {
                this.buffer = new long[_size >> 10];
            }
        }
    }

解决方案 »

  1.   

    public BitSet(int _size, boolean buffer_size) {         
    if (buffer_size) {            
         this.buffer = new long[_size];         
    } else {   
         this.BitSet(int _size) ;
         }   
      } 直接调用就行了。
      

  2.   


        public BitSet(int _size, boolean buffer_size) {
            if (buffer_size) {
                this.buffer = new long[_size];
            } else {
                this.BitSet(_size) ;
            }
        }
    会提示错误的 说是找不到方法
    而且我试了this(_size)也不行
      

  3.   


    public BitSet(int _size, boolean buffer_size) {          
    if (buffer_size) {                  
    this.buffer = new long[_size];          
    } else {         
    this.BitSet(int _size) ;     
     }      }  
    写错了,调用时把这个int去掉, this.BitSet(_size) ;     
      

  4.   


    你看我的回帖int去了也有错
      

  5.   

     this.BitSet(_size) ;
    看看是不是这个分号前多个空格了
      

  6.   

     构造函数里用this 调用其他构造函数,只能在本构造函数第一句。
    因此,只能: public BitSet(int _size)
    {
    if (_size >> 10 == 0) 
    {
    this.buffer = new long[1];
    }
    else 
    {
    this.buffer = new long[_size >> 10];
    }
    }
    public BitSet(int _size,boolean buffer_size)
    {
    this(_size);//先调用,再判断。如buffer_size为true,会产生一个垃圾数组。
    if (buffer_size) 
    {
    this.buffer = new long[_size];
    }
    }另一个办法是,设置一个函数,里面是那块重复的代码。构造函数里调用。 public BitSet(int _size)
    {
    init(_size);
    }
    public BitSet(int _size,boolean buffer_size)
    {
    if (buffer_size) 
    {
    this.buffer = new long[_size];
    }
    else
    {
    init(_size);
    }
    } public void init(int _size)
    {
    if (_size >> 10 == 0) 
    {
    this.buffer = new long[1];
    }
    else 
    {
    this.buffer = new long[_size >> 10];
    }
    }