Security 中级

使用 RandomGenerator 接口按名称选择随机数算法。

✕ Java 8
// Hard-coded to one algorithm
Random rng = new Random();
int value = rng.nextInt(100);

// Or thread-local, but still locked in
int value = ThreadLocalRandom.current()
    .nextInt(100);
✓ Java 17+
// Algorithm-agnostic via factory
var rng = RandomGenerator.of("L64X128MixRandom");
int value = rng.nextInt(100);

// Or get a splittable generator
var rng = RandomGeneratorFactory
    .of("L64X128MixRandom").create();
发现此代码有问题? 告诉我们。
🔧

算法无关

按名称选择最佳 RNG 算法,无需更改代码结构。

📐

统一接口

所有随机数生成器共享相同的接口。

更好的算法

访问 L64X128MixRandom 等现代高质量 PRNG。

旧方式
new Random() / ThreadLocalRandom
现代方式
RandomGenerator 工厂
自 JDK
17
难度
中级
RandomGenerator 接口
可用

自 JDK 17 起可用(2021 年 9 月,JEP 356)。

JDK 17 引入 RandomGenerator 作为所有 RNG 实现的通用接口。通过名称选择算法,可以轻松切换实现而无需更改代码结构。

分享 𝕏 🦋 in