JDK 12 RFR of JDK-8146726 : Refactor AbstractProcessor to use Set.of and related methods
Ivan Gerasimov
ivan.gerasimov at oracle.com
Thu Nov 29 02:52:49 UTC 2018
Hi Joe!
In two places the expected numbers of elements is used instead of the
initial capacity of a new HashSet:
new HashSet<>(values.length);
Wouldn't the default initial capacity (i.e. `new HashSet<>()` ) be
better choice here, as the number of values is likely to be small and
the HashSet is temporary anyway?
With kind regards,
Ivan
On 11/28/18 6:09 PM, joe darcy wrote:
> Hi Ron,
>
> Adding Stuart for a collections consult; Stuart, what is the currently
> recommended idiom to construct a unmodifiable collection with the same
> elements as a existing collection? In particular, for a set of Strings
> is something like
>
> Set.of(stringSet(new String[0]))
>
> preferred over
>
> Collections.unmodifiableSet(stringSet);
>
> Assume serialization is not a concern.
>
> On 11/27/2018 1:23 PM, Ron Shapiro wrote:
>> Set.of() throws if there are duplicate elements - but arrayToSet()
>> didn't do so. Is it intended to throw if either of these take
>> duplicates?
>>
>
> Good catch.
>
> After some pondering, I think it is preferable for AbstractProcessor
> to not treat duplicates as an error, but to issue a warning in if
> duplicates are found. Arguably, it would have been reasonable to treat
> such condition as an error initially when the API was introduced, but
> adding such a check now could have some unnecessary behavioral
> compatibility impact. The case to add an erroneous check for options
> is stronger than for supported annotations because supported
> annotations have some additional processing if modules are not
> present. In more detail, with modules to fully specify an annotation
> type, the module name needs to be used: "mod1/foo.bar" vs
> "mod2/foo.bar". If such a processor is run when modules are not used,
> then the names are stripped to "foo.bar" in both cases and that should
> not be treated as an error.
>
> Revised webrev:
>
> http://cr.openjdk.java.net/~darcy/8146726.3/
>
> Will possibly update based on guidance from Stuart on the collections
> usage question.
>
> Thanks,
>
> -Joe
>
--
With kind regards,
Ivan Gerasimov
More information about the compiler-dev
mailing list