我查看了Float的javadoc内部,但是在构造之后似乎没有任何方法可以修改该值?
Float f = new Float(1.23f);
[...]
f.setValue(3.14f); // Nothing like this seems to exist...
f = 3.14f; // "f" now points to a new object, not what I want...
有没有办法改变对象的价值?或者,是否有另一个可用的包装类允许这个?
答案 0 :(得分:5)
您无法更改Float
的值;所有原始包装类都是不可变的。如果要添加此功能,可以创建自己的(可变的)包装类,或者从Apache Commons查看MutableFloat
。
答案 1 :(得分:4)
Float
是一个值对象(不可变对象)。
如果没有使用新值重新实现新的值,则更改direclty的值是没有意义的。
事实上,Float
没有Identity
的概念,它只是一个纯粹的 VALUE ,因此不需要可变的行为。
理解这个概念可能会引起你的兴趣:
http://devlicio.us/blogs/casey/archive/2009/02/13/ddd-entities-and-value-objects.aspx
答案 2 :(得分:3)
所有java.lang包裹包装类都是不可变的:Boolean, 字节,字符,双精度,浮点数,整数,长,短,字符串。
因此,没有setter或任何其他方法来更改Float对象的值。