草庐IT

Immutability

全部标签

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

java - 不可变类?

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

Java 不可变集合

来自Java1.6CollectionFrameworkdocumentation:Collectionsthatdonotsupportanymodificationoperations(suchasadd,removeandclear)arereferredtoasunmodifiable.[...]CollectionsthatadditionallyguaranteethatnochangeintheCollectionobjectwilleverbevisiblearereferredtoasimmutable.第二个标准让我有点困惑。鉴于第一个集合是不可修改的,并且假设原始

Java 不可变集合

来自Java1.6CollectionFrameworkdocumentation:Collectionsthatdonotsupportanymodificationoperations(suchasadd,removeandclear)arereferredtoasunmodifiable.[...]CollectionsthatadditionallyguaranteethatnochangeintheCollectionobjectwilleverbevisiblearereferredtoasimmutable.第二个标准让我有点困惑。鉴于第一个集合是不可修改的,并且假设原始

java - 不可变集合与不可修改集合

这个问题在这里已经有了答案:JavaImmutableCollections(7个回答)关闭5个月前。来自CollectionsFrameworkOverview:Collectionsthatdonotsupportmodificationoperations(suchasadd,removeandclear)arereferredtoasunmodifiable.Collectionsthatarenotunmodifiablearemodifiable.CollectionsthatadditionallyguaranteethatnochangeintheCollectiono

java - 不可变集合与不可修改集合

这个问题在这里已经有了答案:JavaImmutableCollections(7个回答)关闭5个月前。来自CollectionsFrameworkOverview:Collectionsthatdonotsupportmodificationoperations(suchasadd,removeandclear)arereferredtoasunmodifiable.Collectionsthatarenotunmodifiablearemodifiable.CollectionsthatadditionallyguaranteethatnochangeintheCollectiono

java - 字符串是不可变的。究竟是什么意思?

这个问题在这里已经有了答案:ImmutabilityofStringsinJava(26个回答)6年前关闭。我在不可变字符串上编写了以下代码。publicclassImmutableStrings{publicstaticvoidmain(String[]args){testmethod();}privatestaticvoidtestmethod(){Stringa="a";System.out.println("a1-->"+a);a="ty";System.out.println("a2-->"+a);}}输出:a1-->aa2-->ty这里变量的值a已更改(虽然许多人说不可变对

java - 字符串是不可变的。究竟是什么意思?

这个问题在这里已经有了答案:ImmutabilityofStringsinJava(26个回答)6年前关闭。我在不可变字符串上编写了以下代码。publicclassImmutableStrings{publicstaticvoidmain(String[]args){testmethod();}privatestaticvoidtestmethod(){Stringa="a";System.out.println("a1-->"+a);a="ty";System.out.println("a2-->"+a);}}输出:a1-->aa2-->ty这里变量的值a已更改(虽然许多人说不可变对

python - 从 Python 中的字符串中删除特定字符

我正在尝试使用Python从字符串中删除特定字符。这是我现在正在使用的代码。不幸的是,它似乎对字符串没有任何作用。forcharinline:ifcharin"?.!/;:":line.replace(char,'')我该如何正确地做到这一点? 最佳答案 Python中的字符串是不可变的(无法更改)。正因为如此,line.replace(...)的作用只是创建一个新字符串,而不是更改旧字符串。您需要将其重新绑定(bind)(分配)到line以使该变量采用新值,并删除这些字符。此外,相对而言,您执行此操作的方式会有点慢。对于有经验的P