On Tue, 27 Oct 2020 03:09:32 GMT, Roger Riggs <rri...@openjdk.org> wrote:
>> java.util.HexFormat utility: >> >> - Format and parse hexadecimal strings, with parameters for delimiter, >> prefix, suffix and upper/lowercase >> - Static factories and builder methods to create HexFormat copies with >> modified parameters. >> - Consistent naming of methods for conversion of byte arrays to formatted >> strings and back: formatHex and parseHex >> - Consistent naming of methods for conversion of primitive types: >> toHexDigits... and fromHexDigits... >> - Prefix and suffixes now apply to each formatted value, not the string as >> a whole >> - Using java.util.Appendable as a target for buffered conversions so output >> to Writers and PrintStreams >> like System.out are supported in addition to StringBuilder. (IOExceptions >> are converted to unchecked exceptions) >> - Immutable and thread safe, a "value-based" class >> >> See the [HexFormat >> javadoc](http://cr.openjdk.java.net/~rriggs/8251989-hex-formatter/java.base/java/util/HexFormat.html) >> for details. >> >> Review comments and suggestions welcome. > > Roger Riggs has updated the pull request incrementally with two additional > commits since the last revision: > > - The HexFormat API indexing model for array and string ranges is changed > to describe the range using 'fromIndex (inclusive)' and 'toIndex > (exclusive)'. > > Initially, it was specified as 'index' and 'length'. However, both byte > arrays > and strings used in the HexFormat API typically use fromIndex and toIndex > to describe ranges. Using the same indexing model can prevent mistakes. > > The change affects the methods and corresponding tests: > > formatHex(byte[] bytes, int fromIndex, int toIndex) > formatHex(A out, byte[] bytes, int fromIndex, int toIndex) > parseHex(char[] chars, int fromIndex, int toIndex) > parseHex(CharSequence string, int fromIndex, int toIndex) > fromHexDigits(CharSequence string, int fromIndex, int toIndex) > fromHexDigitsToLong(CharSequence string, int fromIndex, int toIndex) > - - Added @see and @link references to Integer.toHexString and > Long.toHexString > - Clarified parsing is case insensistive in various parse and fromXXX > methods > - Source level cleanup based on review comments > - Expanded some javadoc tag text to make it more descriptive > - Consistent use of 'hexadecimal' vs 'hex' The changes look good, especially that `Integer.toHexString` and `Long.toHexString` now link to this new class! src/java.base/share/classes/java/lang/Integer.java line 260: > 258: * {@code Integer.toHexString(n).toUpperCase()} > 259: * </blockquote> > 260: * <p> Is this needed? `@apiNote` is a block tag so should create a paragraph on its own. src/java.base/share/classes/java/lang/Long.java line 295: > 293: * {@code Long.toHexString(n).toUpperCase()} > 294: * </blockquote> > 295: * <p> Is this needed? `@apiNote` is a block tag so should create a paragraph on its own. src/java.base/share/classes/java/util/HexFormat.java line 316: > 314: * @param bytes a non-null array of bytes > 315: * @param fromIndex the initial index of the range, inclusive > 316: * @param toIndex the final index of the range, exclusive. Suggestion: * @param toIndex the final index of the range, exclusive The period at the end is inconsistent. Applies to the other `@param toIndex` as well. ------------- PR: https://git.openjdk.java.net/jdk/pull/482