Tag: immutability

番石榴中是否有相应的不可变enumMap?

我最近了解了EnumMap在Java中的优点,并希望将现有的ImmutableMap替换为EnumMap。 但是,我也喜欢ImmutableMap提供的不可变属性。 是否有一个变体,在guava中可用的ImmutableEnumMap? 在存储方面哪一个(EnumMap与ImmutableMap)表现更好? 我找不到两者的比较。 如果有人能指出我的链接或对两个数据结构的效率有一些见解,我会很感激吗?

为什么Java包装类是不可变的?

我知道适用于一般不可变类的通常原因,即 不能改变作为副作用 很容易理解他们的状态 固有的线程安全 无需提供克隆/复制构造函数/工厂复制方法 实例缓存 不需要防御性副本。 但是,包装类表示基本类型,基本类型是可变的。 那么为什么封装类不可变?

jit会优化新对象吗?

我创建了这个类是不可变的,并且具有流畅的API: public final class Message { public final String email; public final String escalationEmail; public final String assignee; public final String conversationId; public final String subject; public final String userId; public Message(String email, String escalationEmail, String assignee, String conversationId, String subject, String userId) { this.email = email; this.escalationEmail = escalationEmail; this.assignee = assignee; this.conversationId = […]

可变对象和hashCode

有以下课程: public class Member { private int x; private long y; private double d; public Member(int x, long y, double d) { this.x = x; this.y = y; this.d = d; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + x; result = […]