On Mon, 18 Sep 2023 22:42:09 GMT, Justin Lu <j...@openjdk.org> wrote:

> Please review this PR which restricts sub-classing of the internal calendar 
> system in sun.util.calendar to only the existing implementations.
> 
> As the implementation is long-standing and complete with no intent for future 
> sub-classing, the CalendarSystem should be made sealed. Modifiers adjusted 
> accordingly (`JulianCalendar.Date` must now have package visibility).
> 
> 
> This system has the following structure,
> 
> `CalendarSystem` extended by `AbstractCalendar` extended by `BaseCalendar` 
> extended by 
> (`Gregorian, JulianCalendar, LocalGregorianCalendar`)
> 
> `CalendarDate` extended by `BaseCalendar.Date` extended by 
> (`Gregorian.Date, ImmutableGregorianDate, JulianCalendar.Date, 
> LocalGregorianCalendar.Date`)
> 
> Additionally, CalendarUtils was made `final`, as it is a utility class 
> composed of static util methods.

Looks good overall.

src/java.base/share/classes/sun/util/calendar/CalendarUtils.java line 30:

> 28: public final class CalendarUtils {
> 29: 
> 30:     private CalendarUtils() {}

It may be obvious, but adding a comment would be helpful, i.e., no instance may 
be created.

src/java.base/share/classes/sun/util/calendar/CalendarUtils.java line 132:

> 130:      * Mimics sprintf(buf, "%0*d", decaimal, width).
> 131:      */
> 132:     public static StringBuilder sprintf0d(StringBuilder sb, int value, 
> int width) {

Can this (and the following overload) method be eliminated? No need to mimic 
`sprintf` here, but using `String.format`/`formatted` should suffice?

src/java.base/share/classes/sun/util/calendar/Gregorian.java line 40:

> 38: 
> 39:     static final class Date extends BaseCalendar.Date {
> 40:         Date() {

I think removing `protected` from the `final` class methods is fine. Adding 
`@Override` may be helpful.

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

PR Review: https://git.openjdk.org/jdk/pull/15803#pullrequestreview-1633738951
PR Review Comment: https://git.openjdk.org/jdk/pull/15803#discussion_r1330414349
PR Review Comment: https://git.openjdk.org/jdk/pull/15803#discussion_r1330430127
PR Review Comment: https://git.openjdk.org/jdk/pull/15803#discussion_r1330418996

Reply via email to