web-dev-qa-db-ja.com

JavaでGUIDを作成する

JavaでGUIDを作成するための最良の方法は何ですか?

333
Chris Dutrow

Java 5以降にバンドルされている UUIDクラス を見てください。

例えば:

306
Mark Byers

Java.util.UUID.randomUUID();

375
Kaleb Brasee

どの種類の UUID が必要かによって異なります。

  • 標準のJava UUID クラスは、 バージョン4 (ランダム)のUUIDを生成します。 (UPDATE - バージョン3 (name)のUUIDも生成できます。生成できませんが、他のバリアントも処理できます。それら。 (この場合、 "handle"は UUIDbyte[] または long の表現からStringインスタンスを構築することを意味します。そして適切なアクセサを提供します。

  • Java UUIDジェネレータ(JUG) の実装は、「 RFC-4122 で定義されているように、すべての「公式3」タイプのUUIDをサポートすることを目的としています... RFCは実際には4つのタイプを定義し、5番目のタイプに言及していますが。

UUIDの型と変種の詳細については、 ウィキペディア に概要があり、詳細な説明は RFC 4122 およびその他の仕様にあります。

31
Stephen C

例を挙げてMark Byersの答えを拡張するだけです。

import Java.util.UUID;

public class RandomStringUUID {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        String randomUUIDString = uuid.toString();
        System.out.println("UUID=" + randomUUIDString );
    }
}
17
Anton Belev

他の答えは、特に これ によって スティーブンC が正しいです。

Javaの外部に到達する

Java内でのUUID 値の生成は、 バージョン4(ランダム) に制限されています。セキュリティ上の問題があるためです。

他のバージョンのUUIDが必要な場合は、次のように呼び出してUUIDを生成するために、Javaアプリケーションを JVM の外側に移動させる必要があります。

  • コマンドラインユーティリティ
    ほぼすべてのオペレーティングシステムにバンドルされています。
    たとえば、 uuidgen は、Mac OS X、BSD、およびLinuxにあります。
  • データベースサーバ
    データベースサーバー上で生成されたUUIDを取得するには、 JDBC を使用します。
    例えば、 uuid-ossp 拡張子はしばしば Postgres にバンドルされています。 )その拡張は、バージョン1、3、および4の値と、さらに2つのバリエーションを生成することができます。
    • uuid_generate_v1mc() - バージョン1のUUIDを生成しますが、コンピュータの実際のMACアドレスの代わりにランダムなマルチキャストMACアドレスを使用します。
    • uuid_generate_v5(namespace uuid, name text) - バージョン5のUUIDを生成します。これは、ハッシュ方法としてSHA-1が使用されている点を除けば、バージョン3のUUIDのように機能します。
  • Webサービス
    例えば、 UUID Generator は、 nil値と同様にバージョン1と3を作成しますGUID
6
Basil Bourque