On Wed, 26 Jan 2022 17:04:35 GMT, Yasser Bazzi <d...@openjdk.java.net> wrote:
>> src/java.base/share/classes/java/util/random/RandomGenerator.java line 144: >> >>> 142: /** >>> 143: * Returns a wrapper to use {@link java.util.Random} >>> 144: * @return {@link java.util.Random} >> >> Possible reword: >> "Returns a Random from this RandomGenerator." >> >> It should be specified that the resulting Random acts in all respects except >> that >> setSeed is not available. >> >> Missing period at the end of the sentence. Check all comments for grammar >> and punctuation. > > Is something like this better? > /** > * Returns a {@link java.util.Random} from this {@link > java.util.RandomGenerator}. > * The resulting Random acts in all respects except that setSeed is not > available. > * > * @return {@link java.util.Random} > */ Suggest: > Returns an instance of {@link java.util.Random} based on this {@code > RandomGenerator}. > If this generator is already an instance of {@code Random}, it is returned. > Otherwise, this method > returns an instance of {@code Random} that delegates all methods except > `setSeed` to this > generator. Its `setSeed` method always throws {@link > UnsupportedOperationException}. (Note no link is necessary for RandomGenerator since we are in that class already.) >> src/java.base/share/classes/jdk/internal/util/random/RandomWrapper.java line >> 58: >> >>> 56: * setSeed does not exist in {@link >>> java.util.random.RandomGenerator} so can't >>> 57: * use it >>> 58: */ >> >> Its debatable whether setSeed can ignore the argument or should throw an >> exception. >> If it ignores the argument, it is explicitly violating the contract of the >> supertype Random.setSeed >> that says the seed is set. >> I'd recommend throwing an UnsupportedOperationException because setSeed will >> not work as expected. >> Other classes (ThreadLocalRandom) throws UnsupportedOperationException from >> setSeed. > > throwing UnsupportedOperationException was my first thought but when i call > asRandom() it will always throw it, i could create something like what > ThreadLocalRandom does (check if it initialized and throw) Yes, probably following ThreadLocalRandom is the right thing. Pretty clunky but I think it's necessary. ------------- PR: https://git.openjdk.java.net/jdk/pull/7001