草庐IT

Immutability

全部标签

java - 是否可以在 Hibernate/JPA 中使用不可变字段?

在我们的应用程序中,我们需要有只能分配一次的字段。一开始我们想到的是封装字段,让setters私有(private)化。然而,一些问题引起了:没有公共(public)setter,Hibernate是否仍然能够从数据库映射字段?我能否去除setter并使字段仅在实体构造函数中可变?最后,是否有任何标准的JPA方法可以使字段不可变?提前致谢。 最佳答案 尝试@Column(updatable=false)并将您的二传手设为私有(private)。(如果你愿意,请公开你的setter/getter)我认为这是最佳实践。P.S.:如果您对

变量的 Java final 关键字

final关键字如何不使变量不可变?Wikipediasaysitdoesn't. 最佳答案 在Java中,术语final指的是引用,而immutable指的是对象。将final修饰符分配给引用意味着它不能更改为指向另一个对象,但如果对象是可变的,则可以修改该对象本身。例如:finalArrayListarr=newArrayList();arr.add("hello");//OK,theobjecttowhicharrpointsismutatedarr=null;//NotOK,thereferenceisfinalandcan

java - 使用 Hibernate 时 @Immutable 和 @Entity(mutable=false) 有什么区别

两者有什么区别?一个实体应该使用一个还是两者都使用? 最佳答案 对于entity来说几乎没有区别。@Immutable获得优先级(也就是说,如果您的实体同时被注释为@Immutable和@Entity(mutable="true"),它是将被视为不可变的)。@Immutable也可以用于具有几乎相同语义的集合。详情为here 关于java-使用Hibernate时@Immutable和@Entity(mutable=false)有什么区别,我们在StackOverflow上找到一个类似的

python - 为什么元组在 Python 中不可变?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyarepythonstringsandtuplesaremadeimmutable?什么较低级别的设计使元组在Python中不可变?为什么这个功能很有用?

python - 默认内存所有方法

我正在编写一个应用程序,用于收集和显示来自科学仪器的数据。其中一条数据是一个频谱:本质上只是一个值列表,加上一个包含一些元数据的字典。一旦应用程序收集了数据,它就不会改变,因此列表和元数据都可以被认为是不可变的。我想通过大量内存对频谱执行计算的函数来利用这一点。这是一个玩具示例:classSpectrum(object):def__init__(self,values,metadata):self.values=valuesself.metadata=metadata#self.valuesandself.metadatashouldnotchangeafterthispoint.@p

python - set 和 frozenset 的继承行为似乎不同

有人可以解释以下行为吗:classderivedset1(frozenset):def__new__(cls,*args):returnfrozenset.__new__(cls,args)classderivedset2(set):def__new__(cls,*args):returnset.__new__(cls,args)a=derivedset1('item1','item2')#WORKSb=derivedset2('item1','item2')#DOESN'TWORKTraceback(mostrecentcalllast):File"inheriting-behavi

Python - 为什么 extend() 和 append() 返回 None (void)?

这个问题在这里已经有了答案:Whydotheselistoperations(methods:clear/extend/reverse/append/sort/remove)returnNone,ratherthantheresultinglist?(5个答案)关闭3个月前。我认为list1.extend(list2)和list1.append(num)应该返回变异列表和变异id,而不是返回None。

python - 在 Python 中高效地进行多个字符串替换

如果我想执行多个字符串替换,执行此操作的最有效方法是什么?我在旅行中遇到的这种情况的例子如下:>>>strings=['a','list','of','strings']>>>[s.replace('a','')...replace('u','')forsinstringsiflen(s)>2]['a','lst','of','strngs'] 最佳答案 您给出的具体示例(删除单个字符)非常适合字符串的translate方法,用单个字符替换单个字符也是如此。如果输入的字符串是Unicode字符串,那么,除了上述两种“替换”之外,用t

python - 可变类型与不可变类型的图表

在线某处是否有表格或图表显示python中哪些类型(内置)是可变的和不可变的? 最佳答案 我不确定图表,但基本上:可变:list,dictionary,bytearray注意:bytearray不是序列。不可变:元组,str您可以使用以下方法检查可变性:>>>importcollections>>>l=range(10)>>>s="HelloWorld">>>isinstance(l,collections.MutableSequence)True>>>isinstance(s,collections.MutableSequence

python - Python 中的不变性

这个问题在这里已经有了答案:Pythonstringsarenotimmutable?[duplicate](2个答案)关闭2年前。我试图了解不变性在python中的工作原理。由于字符串在python中是不可变的,所以我希望每次执行字符串操作时id都会更改,但它没有按预期工作。例子:t上的最后一个操作不会改变它的id。有什么想法吗?