打字猴:1.700441308e+09
1700441308
1700441309 以上两个场景利用了构造代码块的两个特性:在每个构造函数中都运行和在构造函数中它会首先运行。很好地利用构造代码块的这两个特性不仅可以减少代码量,还可以让程序更容易阅读,特别是当所有的构造函数都要实现逻辑,而且这部分逻辑又很复杂时,这时就可以通过编写多个构造代码块来实现。每个代码块完成不同的业务逻辑(当然了,构造函数尽量简单,这是基本原则),按照业务顺序依次存放,这样在创建实例对象时JVM也就会按照顺序依次执行,实现复杂对象的模块化创建。
1700441310
1700441311
1700441312
1700441313
1700441314 编写高质量代码:改善Java程序的151个建议 [:1700438106]
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();
[ 上一页 ]  [ :1.700441308e+09 ]  [ 下一页 ]