3-2-2 Flyweightパターン
▼IntegerクラスはvalueOfメソッドを利用した場合、-128<=value<=127の範囲でキャッシュするようにしている。
テストコード
public class IntegerTest {
/**
* コンストラクタ。
*/
public IntegerTest() {
}
public static void main(String[] args) {
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
compare(i1, i2);
i1 = Integer.valueOf(127);
i2 = Integer.valueOf(127);
compare(i1, i2);
i1 = Integer.valueOf(128);
i2 = Integer.valueOf(128);
compare(i1, i2);
i1 = Integer.valueOf(-128);
i2 = Integer.valueOf(-128);
compare(i1, i2);
i1 = Integer.valueOf(-129);
i2 = Integer.valueOf(-129);
compare(i1, i2);
}
private static void compare(Integer i1, Integer i2) {
if (i1 == i2) {
System.out.println("i1 == i2");
} else {
System.out.println("i1 != i2");
}
}
}実行結果
i1 != i2 i1 == i2 i1 != i2 i1 == i2 i1 != i2
おおっほんとですね。
0 件のコメント:
コメントを投稿