1

Eclipse IDE (コア Java) でデバッグすると、検査されたオブジェクトの後に ID が表示されます。例: myObject=MyClass (id=123)

意図しないオブジェクトの変更を検出するには、OID もログに記録すると役立ちます。オブジェクト固有の一意の ID を返す getOid() メソッドを作成する方法はありますか? シリアライズ可能である必要はなく、1 回の実行で使用されるだけです。hashCode() とは対照的に、OID は一意でなければなりません。この getOid() は、int、long、String、または印刷可能なものを返す場合があります。前もって感謝します

4

3 に答える 3

0

OIDGenerator コンストラクターのないさらに単純なバージョン:

パブリック クラス OIDGenerator {

private static long sOID = 0;

public static long longNext() {
    return ++sOID;
}

public static String next() {
    return new StringBuffer( "@").append( String.valueOf( longNext())).toString();
}

}

ただし、静的変数のため、両方のバージョンをサーバーのクラスターで使用できないことに注意してください。

于 2015-04-08T19:16:36.070 に答える
0

OK、すべてのコンストラクターで使用されるシーケンスジェネレーター「OIDGenerator」で解決しました。

パブリック クラス OIDGenerator {

private static OIDGenerator mOIDGen;
private static long mOID;

/**
 * Singleton Constructor
 */
private OIDGenerator() {
    mOID = 0;
}

public static long longNext() {
    if( mOIDGen == null) {
        mOIDGen = new OIDGenerator();    // => init 0
    }
    return ++mOID;
}

public static String next() {
    return new StringBuffer( "@").append( String.valueOf( longNext())).toString();
}

}

すべてのクラスのメンバー変数:

private final transient String mOID;

それらのコンストラクターで:

mOID = OIDGenerator.next();

提供方法:

@Override
public String getOID() {
    return mOID;
}
于 2015-04-07T20:47:04.587 に答える