Comment on CSR 8251991: Hex formatting and parsing utility
Roger Riggs
roger.riggs at oracle.com
Mon Mar 29 22:24:53 UTC 2021
HI Raffaello,
Which methods and what did you have in mind?
(There may be good reasons for them as they are.)
Thanks, Roger
On 3/29/21 5:07 PM, Raffaello Giulietti wrote:
> Thanks, I noticed.
>
> There are a couple of other methods that can be simplified, require a
> couple of minutes to review and which don't have any impact on the API.
>
> If you agree, I'll prepare a PR with all the changes and the bug
> narrative for you to add to bugs.openjdk.org (I only have read access).
>
>
> Greetings
> Raffaello
>
>
>
> On 2021-03-26 16:08, Roger Riggs wrote:
>> fyi, a PR to make the methods static.
>>
>> https://git.openjdk.java.net/jdk/pull/3205
>>
>> On 3/15/21 4:26 PM, Raffaello Giulietti wrote:
>>> Hello,
>>>
>>> I understand your points expressed in
>>> https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-October/070317.html
>>>
>>>
>>> On the other hand, it kind of hurts when the javadoc spec implies
>>> that the fromXXX() methods do not logically depend on the state and
>>> yet one has to invoke them on some instance anyway.
>>>
>>>
>>> As for HexFormat.of() to always return the same instance, you are of
>>> course right in observing that this is out of place for value-based
>>> classes. The intent was to describe a static-like idiom that would
>>> deter programmers to rewrite their own static version of these methods.
>>>
>>>
>>> Greetings
>>> Raffaello
>>>
>>>
>>>> Hi,
>>>>
>>>> The question about static vs instance methods was raised during the
>>>> review.
>>>> At the time, my rationale for the current API is summarized in this
>>>> email.
>>>> https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-October/070317.html
>>>>
>>>>
>>>> It comes down to choosing one kind of consistency vs another.
>>>>
>>>> I was/am looking for additional comments to weigh one or the other
>>>> alternative.
>>>> I did receive one offline comment in support of static methods on
>>>> the rationale of
>>>> convenience.
>>>>
>>>> Regards, Roger
>>>>
>>>>
>>>> On 3/15/21 12:06 PM, Raffaello Giulietti wrote:
>>>>> Hi,
>>>>>
>>>>> the javadoc of most of the methods listed in my previous post
>>>>> below reads:
>>>>> "The delimiter, prefix, suffix, and uppercase parameters are
>>>>> not used."
>>>>>
>>>>> As these eventually constitute the whole state of an instance of
>>>>> this final class and as the state is not involved, it is possible
>>>>> to declare the methods as static.
>>>>>
>>>>>
>>>>> If, for some reason, declaring the methods as static is not a
>>>>> choice, the next best thing is to clarify that
>>>>> * HexFormat.of() always returns the same instance and thus
>>>>> * absent any other instance, the recommended idiom for invoking
>>>>> any of the methods below is, for example,
>>>>> HexFormat.of().isHexDigit('F')
>>>>> (because there are almost no additional costs wrt static methods.)
>>>> Note that HexFormat is specified as a value based class and
>>>> any statement related to identity is out of place.
>>>>
>>>> Incidentally, its generally discouraged and can cause a warning
>>>> when a static method is invoked using a reference.
>>>>
>>>>>
>>>>> But I don't see a reason why they should be non-static. Just
>>>>> oversight?
>>>>>
>>>>>
>>>>> Greetings
>>>>> Raffaello
>>>>>
>>>>>
>>>>> On 2021-03-08 11:52, Raffaello Giulietti wrote:
>>>>>> Hello,
>>>>>>
>>>>>> it appears that all of the following API methods in [1] can be
>>>>>> declared *static*, which makes them more useful in contexts where
>>>>>> there's no instance of HexFormat available or none is desired.
>>>>>>
>>>>>> As 17 has not yet entered any formal phase, the change should be
>>>>>> harmless.
>>>>>>
>>>>>> public boolean isHexDigit(int);
>>>>>> public int fromHexDigit(int);
>>>>>> public int fromHexDigits(java.lang.CharSequence);
>>>>>> public int fromHexDigits(java.lang.CharSequence, int, int);
>>>>>> public long fromHexDigitsToLong(java.lang.CharSequence);
>>>>>> public long fromHexDigitsToLong(java.lang.CharSequence, int,
>>>>>> int);
>>>>>>
>>>>>> Greetings
>>>>>> Raffaello
>>>>>>
>>>>>> ----
>>>>>>
>>>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8251991
>>
More information about the core-libs-dev
mailing list