5

jvm は String の文字列プールを管理し、そこから新しい String 割り当てを検索します。同様に、他のオブジェクトまたはプリミティブのプールを開発できますか?

4

2 に答える 2

4

Java String 定数のインターン プールは、Java コンパイラに認識されているものであるため、自分で正確な動作を模倣することはできません。

ただし、プール自体はハッシュ マップにすぎません。オブジェクトに適切な識別子がある場合は、独自のオブジェクトのプールを確実にロールできます。キーを受け取り、静的ハッシュ マップで検索し、プールされていない場合にのみ新しいオブジェクトを構築する静的メソッドを作成するだけです。まだ。ただし、この単純なスキームが機能するためには、オブジェクトが不変であることが不可欠であることに注意してください。

于 2013-03-15T10:21:09.297 に答える
3

Java のプール/キャッシュは String プールだけではありません。

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);
}

http://commons.apache.org/proper/commons-pool//もご覧ください。

于 2013-03-15T10:21:00.863 に答える