BOS*_*OSS 9 java design-patterns
为什么java.lang.Integer.valueOf是一个flyweight模式?我试图找到原因,但未能.
ssh*_*nin 16
如果我们查看源代码valueOf,我们可以得到一个提示:
java.lang.Integer的源代码行638-643:
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Run Code Online (Sandbox Code Playgroud)
看起来Integer类为常用值维护了Integer对象的缓存.而不是每次有人要求时都会创建一个新的valueOf,它只返回对已经存在的引用的引用.因此,如果Integer.valueOf(1)多次调用,每次都会返回相同的对象(而不仅仅是等效的对象).
| 归档时间: |
|
| 查看次数: |
3909 次 |
| 最近记录: |