草庐IT

immutability

全部标签

java - 不可变对象(immutable对象)是线程安全的,但为什么呢?

例如,一个线程通过创建它的对象来创建和填充不可变类的引用变量,另一个线程在第一个线程完成之前启动并创建不可变类的另一个对象,不可变类不会使用是线程不安全的吗?创建不可变对象(immutable对象)也意味着所有字段都必须标记为final。itmaybenecessarytoensurecorrectbehaviorifareferencetoanewlycreatedinstanceispassedfromonethreadtoanotherwithoutsynchronization他们是否想说其他线程可能会将引用变量重新指向不可变类的其他对象,这样线程将指向不同的对象而导致状态不一

java - 所有原始包装类都是不可变对象(immutable对象)吗?

Java中的所有原始包装类都是不可变对象(immutable对象)吗?字符串是不可变的。其他不可变对象(immutable对象)是什么? 最佳答案 任何不给您任何方法来更改其中数据的类型都是不可变的-就这么简单。是的,所有原始包装器类型都是不可变的1,String也是如此。UUID,URL和URI是其他例子。虽然内置JavaAPI中的Calendar和Date是可变的,但JodaTime中的许多类型是不可变的-在我看来,这是JodaTime更易于使用的一个原因。如果一个对象是不可变的,您可以在代码中的其他位置保留对它的引用,而不必担

java - 所有原始包装类都是不可变对象(immutable对象)吗?

Java中的所有原始包装类都是不可变对象(immutable对象)吗?字符串是不可变的。其他不可变对象(immutable对象)是什么? 最佳答案 任何不给您任何方法来更改其中数据的类型都是不可变的-就这么简单。是的,所有原始包装器类型都是不可变的1,String也是如此。UUID,URL和URI是其他例子。虽然内置JavaAPI中的Calendar和Date是可变的,但JodaTime中的许多类型是不可变的-在我看来,这是JodaTime更易于使用的一个原因。如果一个对象是不可变的,您可以在代码中的其他位置保留对它的引用,而不必担

java - 为什么 String 类是不可变的,即使它有一个名为 "hash"的非最终字段

我正在阅读EffectiveJava的第15项约书亚布洛赫。在谈到“最小化可变性”的第15条中,他提到了使对象不可变的五个规则。其中之一是使所有字段最终。这是规则:Makeallfieldsfinal:Thisclearlyexpressesyourintentinamannerthatisenforcedbythesystem.Also,itisnecessarytoensurecorrectbehaviorifareferencetoanewlycreatedinstanceispassedfromonethreadtoanotherwithoutsynchronization,a

java - 为什么 String 类是不可变的,即使它有一个名为 "hash"的非最终字段

我正在阅读EffectiveJava的第15项约书亚布洛赫。在谈到“最小化可变性”的第15条中,他提到了使对象不可变的五个规则。其中之一是使所有字段最终。这是规则:Makeallfieldsfinal:Thisclearlyexpressesyourintentinamannerthatisenforcedbythesystem.Also,itisnecessarytoensurecorrectbehaviorifareferencetoanewlycreatedinstanceispassedfromonethreadtoanotherwithoutsynchronization,a

java - Guava 中是否有对应的不可变枚举映射?

我最近了解了EnumMap在Java中的好处,并想替换现有的ImmutableMap到枚举映射。不过,我也喜欢ImmutableMap提供的不可变属性。guava中是否有变体ImmutableEnumMap可用?在存储方面,哪个(EnumMap与ImmutableMap)性能更好?我找不到两者的比较。如果有人能指出一个链接或就这两种数据结构的效率提供一些见解,我将不胜感激? 最佳答案 Guava贡献者在这里。Guava目前没有ImmutableEnumMap变体,但如果有,它可能只是EnumMap的包装器。(也就是说,更好的不可变实

java - Guava 中是否有对应的不可变枚举映射?

我最近了解了EnumMap在Java中的好处,并想替换现有的ImmutableMap到枚举映射。不过,我也喜欢ImmutableMap提供的不可变属性。guava中是否有变体ImmutableEnumMap可用?在存储方面,哪个(EnumMap与ImmutableMap)性能更好?我找不到两者的比较。如果有人能指出一个链接或就这两种数据结构的效率提供一些见解,我将不胜感激? 最佳答案 Guava贡献者在这里。Guava目前没有ImmutableEnumMap变体,但如果有,它可能只是EnumMap的包装器。(也就是说,更好的不可变实

java - 如何从 Java 中的 Java 列表创建 scala.collection.immutable.Seq?

我正试图让Akka进入我的Java项目,但我对Scala的Seq类型的一个小问题感到困惑。我能够将我的ActorRef的Java列表转换为scala.collection.Seq,但我尝试使用的AkkaAPI需要scala.collection.immutable.Seq。怎么做?代码:staticclassRouterextendsUntypedLoadBalancer{privatefinalInfiniteIteratorworkers;publicRouter(Listworkers){SeqworkerSeq=asScalaBuffer(workers);//howtoget

java - 如何从 Java 中的 Java 列表创建 scala.collection.immutable.Seq?

我正试图让Akka进入我的Java项目,但我对Scala的Seq类型的一个小问题感到困惑。我能够将我的ActorRef的Java列表转换为scala.collection.Seq,但我尝试使用的AkkaAPI需要scala.collection.immutable.Seq。怎么做?代码:staticclassRouterextendsUntypedLoadBalancer{privatefinalInfiniteIteratorworkers;publicRouter(Listworkers){SeqworkerSeq=asScalaBuffer(workers);//howtoget

java - 如何在java中创建不可变列表?

我需要将可变列表对象转换为不可变列表。java中可能的方式是什么?publicvoidaction(){ListmutableList=Arrays.asList(newMutableClass("san","UK",21),newMutableClass("peter","US",34));ListimmutableList=immutateList(mutableList);}publicListimmutateList(ListmutableList){//somecodeheretomakethisbeanListimmutable//ie.objectsandsizeofbe