gpt4 book ai didi

JavaBean 缺点——构造时不一致

转载 作者:行者123 更新时间:2023-11-30 07:09:23 28 4
gpt4 key购买 nike

Effective Java - Item-2 states,

a JavaBean may be in an inconsistent state partway through its construction.

我无法理解这一点,如果一个对象是在方法中构造的,那怎么会不一致,如果必须发生异常,构造函数中也可能发生异常。这与线程有何关系?

最佳答案

书中介绍了以下 bean:

NutritionFacts cocaCola = new NutritionFacts();
cocaCola.setServingSize(240);
cocaCola.setServings(8);
cocaCola.setCalories(100);
cocaCola.setSodium(35);
cocaCola.setCarbohydrate(27);

其中,由 setServingSize(int)setServings(int) 设置的 servingSizeservings 是营养成分的基础 - 至少在书中是这样。

但是如果你只是调用:

NutritionFacts cocaCola = new NutritionFacts();
cocaCola.setServingSize(240);
cocaCola.setCalories(100);

那么 servings 字段将不会被设置。因此,生成的实例现在处于无效状态。

因此,如果您调用一个需要有效实例的方法,例如 healthRiskCalculator.calculateHealthRisk(NutritionFacts facts),那么您将在对象内或 healthRiskCalculator 中得到异常>.

现在您可以在调用 calculateHealthRisk() 时检查对您的健康造成的损害,但是可能有许多方法读取或使用对象实例。此外,您可能还为其他产品创建了许多无效实例。换句话说,这不是快速失败

因此,没有使用 bean 创建构造对象的安全方法。这不是线程特有的,您可以在单个线程中创建无效的 bean 实例。

关于JavaBean 缺点——构造时不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169795/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com