【问题标题】:methods within an immutable class which modify the initialized variables upon initialisation? JAVA不可变类中的方法在初始化时修改初始化变量? JAVA
【发布时间】:2019-08-02 03:11:39
【问题描述】:

有谁知道如何将方法添加到不可变类中,这样我就可以修改仅在初始化时指定的对象?

例如,您有 2 个数字,您希望它们能够乘以一个因子。

所以在初始化时,如果你愿意,你也希望能够乘以

类名_of_object = new class(int1, int2).multiply_method(intfactor);

那会创建一个无法修改的对象?

【问题讨论】:

  • 您可以使用构建器模式来创建您的对象...stackoverflow.com/questions/328496/…
  • Java 对构造函数完成时分配的最终字段做出了一些保证,因此您不想那样做。使用构建器模式或在构造函数本身内或从私有的最终辅助方法执行操作。

标签: java class methods constructor immutability


【解决方案1】:

简单地说:你不能。

如果您以某种方式修改了不可变类的字段,那么您已经证明它不是不可变的。

如果它是你自己的类,那么你当然可以在构造之后允许更改,通过编写适当的方法,这样使类可变。

如果你想让你的类不可变,你可以让修改方法返回你的类的一个新实例,并带有更改的字段值(例如BigInteger.add())。原始实例保持不变,您将获得一个具有所需值的新实例。

如果它是别人的不可变类,你不能改变它。你必须处理它的方法。

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 2020-07-26
    • 2014-04-15
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多