java中的所有不可变类型

时间:2012-01-18 06:51:29

标签: java types immutability

Java中有不可变类型。如果将不可变对象传递给方法,则在调用该方法后,即使在该方法中更改了值,也不会更改它。我知道所有原语都是不可变的。 String也是不可变的 我编写了一个简单的代码来检查Java中的功能,看起来原语的包装类也是不可变的。任何人都可以在java中列出所有不可变类型吗?

3 个答案:

答案 0 :(得分:4)

  

即使在该方法中更改了值

,也不会在调用该方法后更改它

与immutable无关。

void change(SomeType st) {
    st.setValue(123); 
}

会改变真实的东西。而

void change(SomeType st) {
    st = new SomeType(123);
}

不会。这里的区别在于您是要更改引用还是对引用的对象进行操作。

字符串和那些包装类被称为不可变,因为绝对没有像setValue这样的成员函数可以更改该对象。

希望你明白这一点。如果您有任何疑问,可以自由发表评论并提出要求。

答案 1 :(得分:1)

不,那是不可能的。

每个人都可以添加自己的不可变类型,我很确定每个不同版本的java引入了一些新的

答案 2 :(得分:-1)

任何用于保存原始值的类,在jdk中提供都应该通过此列表。

示例 - Integer,Long,Double,String等。