草庐IT

immutability

全部标签

python - 如何在 Python 中创建不可变对象(immutable对象)?

虽然我从来不需要这个,但让我感到震惊的是,在Python中创建一个不可变对象(immutable对象)可能有点棘手。你不能只覆盖__setattr__,因为那样你甚至不能在__init__中设置属性.对元组进行子类化是一种有效的技巧:classImmutable(tuple):def__new__(cls,a,b):returntuple.__new__(cls,(a,b))@propertydefa(self):returnself[0]@propertydefb(self):returnself[1]def__str__(self):return"".format(self.a,s

python - 浅拷贝、深拷贝和普通赋值操作有什么区别?

importcopya="deepak"b=1,2,3,4c=[1,2,3,4]d={1:10,2:20,3:30}a1=copy.copy(a)b1=copy.copy(b)c1=copy.copy(c)d1=copy.copy(d)print("immutable-id(a)==id(a1)",id(a)==id(a1))print("immutable-id(b)==id(b1)",id(b)==id(b1))print("mutable-id(c)==id(c1)",id(c)==id(c1))print("mutable-id(d)==id(d1)",id(d)==id(d1

python - 浅拷贝、深拷贝和普通赋值操作有什么区别?

importcopya="deepak"b=1,2,3,4c=[1,2,3,4]d={1:10,2:20,3:30}a1=copy.copy(a)b1=copy.copy(b)c1=copy.copy(c)d1=copy.copy(d)print("immutable-id(a)==id(a1)",id(a)==id(a1))print("immutable-id(b)==id(b1)",id(b)==id(b1))print("mutable-id(c)==id(c1)",id(c)==id(c1))print("mutable-id(d)==id(d1)",id(d)==id(d1

java - 为什么要在 Java 中声明一个不可变类 final?

我读到那是为了制作classimmutable在Java中,我们应该这样做,不提供任何setter将所有字段标记为私有(private)使类(class)成为final类为什么需要第3步?为什么要标记类final? 最佳答案 如果你不标记类final,我可能会突然让你看似不可变的类实际上是可变的。例如,考虑以下代码:publicclassImmutable{privatefinalintvalue;publicImmutable(intvalue){this.value=value;}publicintgetValue(){retu

java - 为什么要在 Java 中声明一个不可变类 final?

我读到那是为了制作classimmutable在Java中,我们应该这样做,不提供任何setter将所有字段标记为私有(private)使类(class)成为final类为什么需要第3步?为什么要标记类final? 最佳答案 如果你不标记类final,我可能会突然让你看似不可变的类实际上是可变的。例如,考虑以下代码:publicclassImmutable{privatefinalintvalue;publicImmutable(intvalue){this.value=value;}publicintgetValue(){retu

java - "new String()"也是不可变的吗?

我研究Java字符串已经有一段时间了。以下问题基于以下帖子JavaStringisspecialImmutabilityofStringinjava不变性:现在,通过不变性,String类的设计使得commonpool中的值可以在其他地方/变量中重用。如果String被创建为Stringa="HelloWorld!";但是,如果我创建像这样的字符串Stringb=newString("HelloWorld!");为什么这也是不可变的?(或者是吗?)。由于它有一个专用的堆内存,我应该能够在不影响任何其他变量的情况下修改它。那么按照设计,是否有任何其他原因将String作为一个整体视为不可

java - "new String()"也是不可变的吗?

我研究Java字符串已经有一段时间了。以下问题基于以下帖子JavaStringisspecialImmutabilityofStringinjava不变性:现在,通过不变性,String类的设计使得commonpool中的值可以在其他地方/变量中重用。如果String被创建为Stringa="HelloWorld!";但是,如果我创建像这样的字符串Stringb=newString("HelloWorld!");为什么这也是不可变的?(或者是吗?)。由于它有一个专用的堆内存,我应该能够在不影响任何其他变量的情况下修改它。那么按照设计,是否有任何其他原因将String作为一个整体视为不可

java - 如何在 Java 中创建不可变对象(immutable对象)?

如何在Java中创建不可变对象(immutable对象)?哪些对象应该被称为不可变对象(immutable对象)?如果我有所有静态成员的类,它是不可变的吗? 最佳答案 以下是不可变对象(immutable对象)的硬要求。使类(class)最终化使所有成员最终化,设置它们显式地,在静态block中,或在构造函数中将所有成员设为私有(private)没有修改状态的方法要非常小心地限制对可变成员的访问(记住字段可能是final,但对象仍然可以是可变的。即privatefinalDateimStillMutable)。在这些情况下,您应该制

java - 如何在 Java 中创建不可变对象(immutable对象)?

如何在Java中创建不可变对象(immutable对象)?哪些对象应该被称为不可变对象(immutable对象)?如果我有所有静态成员的类,它是不可变的吗? 最佳答案 以下是不可变对象(immutable对象)的硬要求。使类(class)最终化使所有成员最终化,设置它们显式地,在静态block中,或在构造函数中将所有成员设为私有(private)没有修改状态的方法要非常小心地限制对可变成员的访问(记住字段可能是final,但对象仍然可以是可变的。即privatefinalDateimStillMutable)。在这些情况下,您应该制

java - 不可变类?

如何使Java类不可变,不可变性的需求是什么,使用它有什么好处? 最佳答案 什么是不可变对象(immutable对象)?不可变对象(immutable对象)是在实例化后不会改变状态的对象。如何使对象不可变?一般来说,不可变对象(immutable对象)可以通过定义一个不暴露其任何成员且不具有任何setter的类来创建。以下类将创建一个不可变对象(immutable对象):classImmutableInt{privatefinalintvalue;publicImmutableInt(inti){value=i;}publicint