Immutable Java:不可变对象与可变对象区别

发布时间:2025-05-18 10:57:29 作者:小樊
来源:亿速云 阅读:93

在Java中,对象可以分为两类:可变对象(Mutable Objects)和不可变对象(Immutable Objects)。这两者的主要区别在于它们的状态是否可以在创建后被修改。

可变对象(Mutable Objects)

  1. 定义:可变对象是指在创建后其状态可以被改变的对象。

  2. 特点

    • 可以通过方法调用修改其内部状态。
    • 需要考虑线程安全问题,因为多个线程可能同时修改同一个对象的状态。
    • 常见的可变对象包括StringBuilderArrayListHashMap等。
  3. 示例

    public class MutableExample {
        private int value;
    
        public MutableExample(int value) {
            this.value = value;
        }
    
        public void setValue(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            MutableExample example = new MutableExample(10);
            System.out.println(example.getValue()); // 输出 10
            example.setValue(20);
            System.out.println(example.getValue()); // 输出 20
        }
    }
    

不可变对象(Immutable Objects)

  1. 定义:不可变对象是指在创建后其状态不能被改变的对象。

  2. 特点

    • 一旦创建,其状态就不能通过任何方法调用进行修改。
    • 天然线程安全,因为多个线程不能同时修改同一个对象的状态。
    • 常见的不可变对象包括StringIntegerLongDoubleFloatBooleanDate(注意:Date类本身是可变的,但它的不可变性通常通过Calendar类来实现)等。
  3. 示例

    public final class ImmutableExample {
        private final int value;
    
        public ImmutableExample(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            ImmutableExample example = new ImmutableExample(10);
            System.out.println(example.getValue()); // 输出 10
            // example.setValue(20); // 编译错误,因为setValue方法不存在
        }
    }
    

总结

在设计类时,如果对象的状态不需要改变,或者希望对象是线程安全的,可以考虑将其设计为不可变对象。这样可以简化代码,提高性能,并减少并发问题。

推荐阅读:
  1. Java中mutable对象和immutable对象有什么区别
  2. Java Immutable:为何不可变对象更安全

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Immutable Java:不可变对象与设计模式

下一篇:WAF网络应用防火墙如何配置

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》