草庐IT

Immutable

全部标签

java - 如何使用 ObjectMapper 在没有默认构造函数的情况下反/序列化不可变对象(immutable对象)?

我想使用com.fasterxml.jackson.databind.ObjectMapper序列化和反序列化不可变对象(immutable对象)。不可变类看起来像这样(只有3个内部属性、getter和构造函数):publicfinalclassImportResultItemImplimplementsImportResultItem{privatefinalImportResultItemTyperesultType;privatefinalStringmessage;privatefinalStringname;publicImportResultItemImpl(Stringn

Ruby:魔术注释 "frozen_string_literal: true"与 "immutable: string"

在ruby​​中,可以通过文件开头的两个不同的魔术注释来卡住文件中的所有常量字符串:#frozen_string_literal:true和#-*-immutable:string-*-我不知道有什么区别。有吗? 最佳答案 第一种语法是Ruby2.3+版本卡住字符串文字的神奇注释,否则你必须像这样使用String方法:'helloworld!'.freeze第二个语法没有在Ruby中实现,但是它是waythatvariablesarespecifiedforfilesintheEmacstexteditor.例如,Emacs中的以下

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 - 如何在 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

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 - 可变对象和不可变对象(immutable对象)之间的区别

这个问题在这里已经有了答案:Whatismeantbyimmutable?(17个回答)关闭9年前。任何人请举例说明可变对象和不可变对象(immutable对象)之间的差异。 最佳答案 可变对象具有可以更改的字段,不可变对象(immutable对象)在创建对象后没有可以更改的字段。一个非常简单的不可变对象(immutable对象)是一个没有任何字段的对象。(例如一个简单的比较器实现)。classMutable{privateintvalue;publicMutable(intvalue){this.value=value;}//ge

java - 可变对象和不可变对象(immutable对象)之间的区别

这个问题在这里已经有了答案:Whatismeantbyimmutable?(17个回答)关闭9年前。任何人请举例说明可变对象和不可变对象(immutable对象)之间的差异。 最佳答案 可变对象具有可以更改的字段,不可变对象(immutable对象)在创建对象后没有可以更改的字段。一个非常简单的不可变对象(immutable对象)是一个没有任何字段的对象。(例如一个简单的比较器实现)。classMutable{privateintvalue;publicMutable(intvalue){this.value=value;}//ge

java - 为什么字符串在 Java 和 .NET 中不能是可变的?

为什么他们决定让String在Java和.NET(以及其他一些语言)中不可变?他们为什么不让它可变呢? 最佳答案 根据EffectiveJava,第4章,第73页,第2版:"Therearemanygoodreasonsforthis:Immutableclassesareeasiertodesign,implement,andusethanmutableclasses.Theyarelesspronetoerrorandaremoresecure.[...]"Immutableobjectsaresimple.Animmutabl

java - 为什么字符串在 Java 和 .NET 中不能是可变的?

为什么他们决定让String在Java和.NET(以及其他一些语言)中不可变?他们为什么不让它可变呢? 最佳答案 根据EffectiveJava,第4章,第73页,第2版:"Therearemanygoodreasonsforthis:Immutableclassesareeasiertodesign,implement,andusethanmutableclasses.Theyarelesspronetoerrorandaremoresecure.[...]"Immutableobjectsaresimple.Animmutabl