java怎么创建不可变的map,用Java创建不可变的类

用Java创建不可变的类

在本文中,我们将定义在Java中创建不可变类并实现它的典型步骤。

在Java中创建不可变类的步骤

将您的班级定为最终班,以便其他班级无法对其进行扩展。

将所有字段设为私有,以便不允许直接访问。

不要提供“ setter”方法-修改字段或字段引用的对象的方法。

具有可变的实例变量时要特别注意 在构造函数内部,请确保使用传递的参数的克隆副本,并且切勿将可变字段设置为通过构造函数传递的真实实例。

确保始终返回该字段的克隆副本,并且永远不要返回真实对象实例。

Java中不可变类的实现

class Address{

private String houseNumber;

private String street;

private String city;

}

class User{

private int id;

private String name;

private String email;

private Address address;

}-

假设上面有一个名为User的类,我们需要将其转换为Java中的Immutable类。让我们遵循规则,并在Java中将此User类转换为Immutable类。

final class User {

private final int id;

private final String name;

private final String email;

private final Address address;

/*

* To clone the address.

*/

private static Address cloneAddress(Address address) {

return new ObjectMapper().convertValue(address, Address.class);

}

User(int id, String name, String email, Address address) {

this.id = id;

this.name = name;

this.email = email;

/*

* Any field contains reference of any mutable object must be

* initialized with the cloned object

*/

this.address = cloneAddress(address);

}

public int getId() {

return id;

}

public String getName() {

return name;

}

public String getEmail() {

return email;

}

public Address getAddress() {

/*

* Getter method must return the reference of cloned object.

*/

return cloneAddress(address);

}

}

Java中的预定义不可变类

字符串类表示字符序列的不可变对象。

包装器类(例如Integer,Float,Long等)均表示相应原始类型的不可变对象。

java.util.UUID代表唯一的128位十六进制字符串。

在Java中制作不可变类的好处

默认情况下,不可变对象是线程安全的。

不可变的对象可以很容易地被缓存。

不可变对象是在任何像HashMap这样的地图中用作关键对象的最佳选择。

结论

在本文中,我们已经看到了如何在java中创建Immutable类。不可变类为我们提供了许多优势,并且最适合多线程环境。我们还学习了组成不可变类的规则及其好处。

感谢您阅读本文。

原文链接:http://codingdict.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值