Class OpenId

java.lang.Object
cloud.opencode.base.id.OpenId

public final class OpenId extends Object
ID Utility Facade Class ID工具门面类

Provides a unified, simple API for generating various types of unique identifiers. This is the main entry point for all ID generation operations.

提供统一、简洁的API来生成各种类型的唯一标识符。 这是所有ID生成操作的主入口。

Supported ID Types | 支持的ID类型:

  • Snowflake - 64-bit time-ordered | 64位时间有序
  • UUID v4/v7 - 128-bit universal | 128位通用
  • ULID - 128-bit lexicographically sortable | 128位字典序可排序
  • TSID - 64-bit time-sorted | 64位时间排序
  • KSUID - 160-bit K-sortable | 160位K可排序
  • NanoID - Compact URL-friendly | 紧凑URL友好
  • Segment - Database sequence | 数据库序列
  • Simple (Atomic/Timestamp/Random) | 简单(原子/时间戳/随机)

Usage Examples | 使用示例:

// Snowflake ID
long snowflakeId = OpenId.snowflakeId();
String snowflakeStr = OpenId.snowflakeIdStr();

// UUID
UUID uuid = OpenId.uuid();
UUID uuidV7 = OpenId.uuidV7();

// ULID
String ulid = OpenId.ulid();

// TSID
long tsid = OpenId.tsid();
String tsidStr = OpenId.tsidStr();

// KSUID
String ksuid = OpenId.ksuid();

// NanoID
String nanoId = OpenId.nanoId();
String shortId = OpenId.nanoId(10);

// Simple IDs
long simpleId = OpenId.simpleId();
String timestampId = OpenId.timestampId();

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是

Features | 主要功能:

  • Unified entry point for all ID generation strategies - 所有ID生成策略的统一入口
  • Support for Snowflake, ULID, UUID, NanoID, KSUID, TSID - 支持Snowflake、ULID、UUID、NanoID、KSUID、TSID
  • Configurable ID generation parameters - 可配置的ID生成参数
Since:
JDK 25, opencode-base-id V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • snowflakeId

      public static long snowflakeId()
      Generates a Snowflake ID using default configuration 使用默认配置生成雪花ID
      Returns:
      64-bit Snowflake ID | 64位雪花ID
    • snowflakeIdStr

      public static String snowflakeIdStr()
      Generates a Snowflake ID as string 生成雪花ID字符串
      Returns:
      Snowflake ID string | 雪花ID字符串
    • getSnowflake

      public static IdGenerator<Long> getSnowflake()
      Gets the default Snowflake generator 获取默认雪花ID生成器
      Returns:
      generator | 生成器
    • createSnowflake

      public static IdGenerator<Long> createSnowflake(long workerId, long datacenterId)
      Creates a Snowflake generator with worker and datacenter IDs 使用工作节点ID和数据中心ID创建雪花ID生成器
      Parameters:
      workerId - the worker node ID (0-31) | 工作节点ID(0-31)
      datacenterId - the datacenter ID (0-31) | 数据中心ID(0-31)
      Returns:
      generator | 生成器
    • snowflakeBuilder

      public static SnowflakeBuilder snowflakeBuilder()
      Creates a Snowflake builder for customized configuration 创建用于自定义配置的雪花ID构建器
      Returns:
      builder | 构建器
    • parseSnowflakeId

      public static SnowflakeIdParser.ParsedId parseSnowflakeId(long id)
      Parses a Snowflake ID 解析雪花ID
      Parameters:
      id - the Snowflake ID | 雪花ID
      Returns:
      parsed result | 解析结果
    • safeJsSnowflakeId

      public static long safeJsSnowflakeId()
      Generates a JavaScript-safe Snowflake ID (value always ≤ 2^53-1) 生成JavaScript安全的雪花ID(值始终≤ 2^53-1)

      Prevents silent rounding when the ID is serialized as a JSON number and consumed by a JavaScript frontend.

      防止ID被序列化为JSON数字并被JavaScript前端消费时的静默四舍五入。

      Returns:
      JavaScript-safe ID | JavaScript安全的ID
    • safeJsSnowflakeIdStr

      public static String safeJsSnowflakeIdStr()
      Generates a JavaScript-safe Snowflake ID as string 生成JavaScript安全的雪花ID字符串
      Returns:
      ID string | ID字符串
    • getSafeJsSnowflake

      public static SafeJsSnowflakeGenerator getSafeJsSnowflake()
      Gets the default JavaScript-safe Snowflake generator 获取默认JavaScript安全雪花ID生成器
      Returns:
      generator | 生成器
    • snowflakeFriendly

      public static SnowflakeFriendlyId snowflakeFriendly()
      Returns a SnowflakeFriendlyId converter using the default configuration 使用默认配置返回SnowflakeFriendlyId转换器

      Examples | 示例:

      String readable = OpenId.snowflakeFriendly().toFriendly(snowflakeId);
      // → "2024-01-15T10:30:00.123Z#0-0-42"
      
      Returns:
      SnowflakeFriendlyId converter | SnowflakeFriendlyId转换器
    • typedIdGenerator

      public static TypedIdGenerator typedIdGenerator(String prefix, IdGenerator<String> inner)
      Creates a TypedIdGenerator with the specified prefix and underlying generator 创建带指定前缀和底层生成器的TypedIdGenerator

      Examples | 示例:

      IdGenerator<String> gen = OpenId.typedIdGenerator("usr", UlidGenerator.create());
      String userId = gen.generate(); // → "usr_01ARZ3NDEKTSV4RRFFQ69G5FAV"
      
      Parameters:
      prefix - the lowercase entity-type prefix (e.g., "usr", "order") | 小写实体类型前缀(如"usr"、"order")
      inner - the underlying string ID generator | 底层字符串ID生成器
      Returns:
      TypedIdGenerator | 类型化ID生成器
      Throws:
      OpenIdGenerationException - if prefix is invalid | 前缀无效时抛出
    • parsePrefixedId

      public static PrefixedId parsePrefixedId(String prefixedId)
      Parses a prefixed ID string (e.g., "usr_01ARZ3NDEK") into a PrefixedId 将带前缀的ID字符串(如"usr_01ARZ3NDEK")解析为PrefixedId
      Parameters:
      prefixedId - the full prefixed ID string | 完整的带前缀ID字符串
      Returns:
      parsed PrefixedId | 解析后的PrefixedId
      Throws:
      OpenIdGenerationException - if the format is invalid | 格式无效时抛出
    • uuid

      public static UUID uuid()
      Generates a UUID v4 (random) 生成UUID v4(随机)
      Returns:
      UUID object | UUID对象
    • uuidStr

      public static String uuidStr()
      Generates a UUID v4 as string 生成UUID v4字符串
      Returns:
      UUID string | UUID字符串
    • simpleUuid

      public static String simpleUuid()
      Generates a simple UUID (no hyphens) 生成简化UUID(无连字符)
      Returns:
      simple UUID string (32 chars) | 简化UUID字符串(32字符)
    • uuidV7

      public static UUID uuidV7()
      Generates a UUID v7 (time-ordered) 生成UUID v7(时间有序)
      Returns:
      UUID object | UUID对象
    • uuidV7Str

      public static String uuidV7Str()
      Generates a UUID v7 as string 生成UUID v7字符串
      Returns:
      UUID string | UUID字符串
    • getUuidV7Generator

      public static IdGenerator<UUID> getUuidV7Generator()
      Gets the UUID v7 generator 获取UUID v7生成器
      Returns:
      generator | 生成器
    • parseUuid

      public static UuidParser.ParsedUuid parseUuid(UUID uuid)
      Parses a UUID to extract version, variant, and timestamp information 解析UUID以提取版本、变体和时间戳信息
      Parameters:
      uuid - the UUID to parse | 要解析的UUID
      Returns:
      parsed UUID info | 解析后的UUID信息
    • ulid

      public static String ulid()
      Generates a ULID 生成ULID
      Returns:
      ULID string (26 chars) | ULID字符串(26字符)
    • ulidBytes

      public static byte[] ulidBytes()
      Generates a ULID as byte array 生成ULID字节数组
      Returns:
      16-byte array | 16字节数组
    • getUlidGenerator

      public static IdGenerator<String> getUlidGenerator()
      Gets the ULID generator 获取ULID生成器
      Returns:
      generator | 生成器
    • parseUlid

      public static UlidParser.ParsedUlid parseUlid(String ulid)
      Parses a ULID 解析ULID
      Parameters:
      ulid - the ULID string | ULID字符串
      Returns:
      parsed result | 解析结果
    • tsid

      public static long tsid()
      Generates a TSID (Time-Sorted ID) 生成TSID(时间排序ID)
      Returns:
      64-bit TSID | 64位TSID
    • tsidStr

      public static String tsidStr()
      Generates a TSID as Crockford's Base32 string 生成Crockford Base32编码的TSID字符串
      Returns:
      TSID string (13 characters) | TSID字符串(13字符)
    • getTsidGenerator

      public static IdGenerator<Long> getTsidGenerator()
      Gets the default TSID generator 获取默认TSID生成器
      Returns:
      generator | 生成器
    • createTsidGenerator

      public static TsidGenerator createTsidGenerator(int nodeBits, long nodeId)
      Creates a TSID generator with node configuration 使用节点配置创建TSID生成器
      Parameters:
      nodeBits - the number of bits for node ID (0-22) | 节点ID位数(0-22)
      nodeId - the node ID | 节点ID
      Returns:
      generator | 生成器
    • parseTsid

      public static TsidParser.ParsedTsid parseTsid(String tsidStr)
      Parses a TSID string 解析TSID字符串
      Parameters:
      tsidStr - the TSID string | TSID字符串
      Returns:
      parsed result | 解析结果
    • parseTsid

      public static TsidParser.ParsedTsid parseTsid(long tsid)
      Parses a TSID long value 解析TSID长整型值
      Parameters:
      tsid - the TSID value | TSID值
      Returns:
      parsed result | 解析结果
    • decodeTsid

      public static long decodeTsid(String tsidStr)
      Decodes a TSID string to long value 将TSID字符串解码为长整型值
      Parameters:
      tsidStr - the TSID string | TSID字符串
      Returns:
      TSID value | TSID值
    • ksuid

      public static String ksuid()
      Generates a KSUID (K-Sortable Unique Identifier) 生成KSUID(K可排序唯一标识符)
      Returns:
      KSUID string (27 characters) | KSUID字符串(27字符)
    • ksuidBytes

      public static byte[] ksuidBytes()
      Generates a KSUID as raw bytes 生成KSUID原始字节
      Returns:
      20-byte array | 20字节数组
    • getKsuidGenerator

      public static IdGenerator<String> getKsuidGenerator()
      Gets the KSUID generator 获取KSUID生成器
      Returns:
      generator | 生成器
    • parseKsuid

      public static KsuidParser.ParsedKsuid parseKsuid(String ksuid)
      Parses a KSUID 解析KSUID
      Parameters:
      ksuid - the KSUID string | KSUID字符串
      Returns:
      parsed result | 解析结果
    • isValidKsuid

      public static boolean isValidKsuid(String ksuid)
      Validates a KSUID string 验证KSUID字符串
      Parameters:
      ksuid - the KSUID string | KSUID字符串
      Returns:
      true if valid | 如果有效返回true
    • nanoId

      public static String nanoId()
      Generates a NanoID (default 21 chars) 生成NanoID(默认21字符)
      Returns:
      NanoID string | NanoID字符串
    • nanoId

      public static String nanoId(int size)
      Generates a NanoID with specific length 使用指定长度生成NanoID
      Parameters:
      size - the length | 长度
      Returns:
      NanoID string | NanoID字符串
    • nanoId

      public static String nanoId(int size, String alphabet)
      Generates a NanoID with custom alphabet 使用自定义字母表生成NanoID
      Parameters:
      size - the length | 长度
      alphabet - the character set | 字符集
      Returns:
      NanoID string | NanoID字符串
    • nanoIdBuilder

      public static NanoIdBuilder nanoIdBuilder()
      Creates a NanoID builder 创建NanoID构建器
      Returns:
      builder | 构建器
    • simpleId

      public static long simpleId()
      Generates a simple incremental ID 生成简单自增ID
      Returns:
      incremental ID | 自增ID
    • timestampId

      public static String timestampId()
      Generates a timestamp-based ID 生成基于时间戳的ID
      Returns:
      timestamp ID string | 时间戳ID字符串
    • randomId

      public static String randomId(int length)
      Generates a random ID 生成随机ID
      Parameters:
      length - the length | 长度
      Returns:
      random ID string | 随机ID字符串
    • createSegmentGenerator

      public static IdGenerator<Long> createSegmentGenerator(SegmentAllocator allocator)
      Creates a segment mode generator 创建号段模式生成器
      Parameters:
      allocator - the segment allocator | 号段分配器
      Returns:
      generator | 生成器
    • createSegmentGenerator

      public static IdGenerator<Long> createSegmentGenerator(SegmentAllocator allocator, String bizTag)
      Creates a segment mode generator with business tag 使用业务标识创建号段模式生成器
      Parameters:
      allocator - the segment allocator | 号段分配器
      bizTag - the business tag | 业务标识
      Returns:
      generator | 生成器