当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

诊断Java代码: 持续初始化器错误情势[Java编程]

赞助商链接



  本文“诊断Java代码: 持续初始化器错误情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

您常常会看到代码不是仅仅通过调用构造函数对类举行初始化,它还通过一些紧接着的意在设置各个域的行动对类举行初始化.不幸的是,这样紧接着的行动是错误的高发地带,会带来持续初始化(run-on initialization)范例的错误.

持续初始化

由于各种缘由(大都是糟糕的),您常常会看到这样的类定义,此中的类构造函数并不带有充足的参数来适本地初始化类的全部域.这样的构造函数要求客户机类用几个步骤来对实例举行初始化(设置未被初始化的域的值),而不是用一个构造函数调用就行了.以这样的方法初始化实例是一个易于出错的历程,我把它称为 持续初始化.这个历程产生的各种错误范例有类似的症状和医治办法,所以我们可以将它们通通归入一种称为 持续初始化器错误情势的情势.

比方,考虑以下代码:

清单 1. 一个简单的持续初始化

class RestrictedInt {
  public Integer value;
  public boolean canTakeZero;

  public RestrictedInt(boolean _canTakeZero) {
   canTakeZero = _canTakeZero;
  }

  public void setValue(int _value) throws CantTakeZeroException {
   if (_value == 0) {
    if (canTakeZero) {
     value = new Integer(_value);
    }
    else {
     throw new CantTakeZeroException(this);
    }
   }
   else {
    value = new Integer(_value);
   }
  }
}
class CantTakeZeroException extends Exception {

  public RestrictedInt ri;

  public CantTakeZeroException(RestrictedInt _ri) {
   super("RestrictedInt can't take zero");
   ri = _ri;
  }
}
class Client {
  public static void initialize() throws CantTakeZeroException {
   RestrictedInt ri = new RestrictedInt(false);
   ri.setValue(0);
  }
}


  以上是“诊断Java代码: 持续初始化器错误情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 诊断Java代码 - 筹划"可测试的"操纵程序
  • <b>诊断Java代码: 臆想实现错误情势,第2部份</b>
  • 诊断Java代码: 筹划可扩大的操纵程序,第2部份
  • 诊断Java代码::Split Cleaner错误情势
  • 诊断Java代码: Fictitious Implementation错误情势,第1部份
  • 诊断Java代码:筹划可扩大的操纵程序,第1部份
  • 诊断Java代码:孤线程(Orphaned Thread)错误情势
  • 诊断Java代码
  • 诊断Java代码: 单元测试与自动化代码解析协同工作
  • 诊断Java代码: Repl供应交互式评价
  • 诊断Java代码: Liar View错误情势
  • 诊断Java代码: Java编程中的断言和时态逻辑
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .