1700441315
编写高质量代码:改善Java程序的151个建议 建议37:构造代码块会想你所想
1700441316
1700441317
上一个建议中我们提议使用构造代码块来简化代码,并且也了解到编译器会自动把构造代码块插入到各个构造函数中,那我们接下来看看编译器是不是足够聪明,能够为我们解决真实的开发问题。有这样一个案例:统计一个类的实例数量。可能你要说了,这很简单,在每个构造函数中加入一个对象计数器不就解决问题了吗?或者使用我们上一个建议介绍的,使用构造代码块也可以。确实如此,我们来看如下代码是否可行:
1700441318
1700441319
public class Client{
1700441320
1700441321
public static void main(String[]args){
1700441322
1700441323
new Base();
1700441324
1700441325
new Base(””);
1700441326
1700441327
new Base(0);
1700441328
1700441329
System.out.println(“实例对象数量:”+Base.getNumOfObjects());
1700441330
1700441331
}
1700441332
1700441333
}
1700441334
1700441335
class Base{
1700441336
1700441337
//对象计数器
1700441338
1700441339
private static int numOfObjects=0;
1700441340
1700441341
{
1700441342
1700441343
//构造代码块,计算产生对象数量
1700441344
1700441345
numOfObjects++;
1700441346
1700441347
}
1700441348
1700441349
public Base(){
1700441350
1700441351
}
1700441352
1700441353
//有参构造调用无参构造
1700441354
1700441355
public Base(String_str){
1700441356
1700441357
this();
1700441358
1700441359
}
1700441360
1700441361
//有参构造不调用其他构造
1700441362
1700441363
public Base(int_i){
[
上一页 ]
[ :1.700441314e+09 ]
[
下一页 ]