RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators

Paul Sandoz psandoz at openjdk.java.net
Mon Mar 15 20:48:12 UTC 2021


On Fri, 26 Feb 2021 13:15:28 GMT, Rémi Forax <github.com+828220+forax at openjdk.org> wrote:

>> Looking for some final code reviews.
>
> I still don't like the fact that the factory uses reflection but i don't see how to do better

This is now looking very nicely structured.

The only thing i am unsure are the details around `RandomGenerator` being a service provider interface. The documentation mentions this at various points (mostly as implementation notes), but it's not really called out on `RandomGenerator`. 

Trying out the patch, I can implement `RandomGenerator` and register it as a service:

public class AlwaysZero implements RandomGenerator {
    @Override
    public long nextLong() {
        return 0;
    }
}
...
        RandomGenerator alwaysZero = RandomGenerator.of("AlwaysZero");
 

Is that intended? (esp. since the annotation `RandomGeneratorProperties` is not public). If i rename the above to `L32X64MixRandom` an `ExceptionInInitializerError` is produced due to duplicate keys.

I suspect you want to filter out the service providers to those that only declare `RandomGeneratorProperties`, thereby restricting to providers only supplied by the platform.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1292


More information about the core-libs-dev mailing list