一个简单的例子
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];
}
}
}
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];
}
}
}
if (buffer_size) {
this.buffer = new long[_size];
} else {
this.BitSet(int _size) ;
}
} 直接调用就行了。
public BitSet(int _size, boolean buffer_size) {
if (buffer_size) {
this.buffer = new long[_size];
} else {
this.BitSet(_size) ;
}
}
会提示错误的 说是找不到方法
而且我试了this(_size)也不行
public BitSet(int _size, boolean buffer_size) {
if (buffer_size) {
this.buffer = new long[_size];
} else {
this.BitSet(int _size) ;
} }
写错了,调用时把这个int去掉, this.BitSet(_size) ;
你看我的回帖int去了也有错
看看是不是这个分号前多个空格了
因此,只能: 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];
}
}