On Tue, 14 May 2024 23:36:13 GMT, Nizar Benalla wrote:
>> src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java
>> line 154:
>>
>>> 152: * Constructs a {@code BasicSliderUI}.
>>> 153: *
>>> 154: * @since 16
>>
>> Hmm, the *explicit* default constructor was added in JDK 16, but it was
>> implicit before then.
>> So I am not 100% sure what the right answer is - the same as the class, or
>> when it was explicitly added.
>
> When mapping methods and when they first appeared (by using the historical
> record built into javac) I use an id in the form of
> `method:
> .()` so for
> covariant overrides in general, when the return type changes I consider it to
> be a new method.
>
> Looking at the contents of the dictionnary:
> This explicit constructor existed for a long time but then this new was added
> a new one was added in JDK 16
> | Key | Value |
> | - | - |
> | `method: void
> javax.swing.plaf.basic.BasicSliderUI.(javax.swing.JSlider):` | 9 |
> | `method: void javax.swing.plaf.basic.BasicSliderUI.():` | 16 |
>
> Note: JDK 9 is used as the "base" as that's how far I can reliably use the
> `--release` info, so if something was added in JDK 2,5.7,9. It has a value of
> "9" in the dictionnary. I mainly check for errors in newer code.
> Hmm, the _explicit_ default constructor was added in JDK 16, but it was
> implicit before then. So I am not 100% sure what the right answer is - the
> same as the class, or when it was explicitly added.
I believe there was no default constructor in `BasicSliderUI()` because there
was a constructor with a parameter `BasicSliderUI(JSlider b)`.
Thus, this case seem to be correct `BasicSliderUI()` is available since 16.
At the same time, `BasicSliderUI(JSlider b)` has existed since at least 7, the
constructor is present in the history of the file. The history in GitHub goes
up to 1st December 2007 which corresponds to Java 7 timeline. I'm pretty sure
this constructor existed in previous releases, and you have to dig further to
find when it was added.
Very much likely, the constructor `BasicSliderUI(JSlider b)` was added when the
`BasicSliderUI` class was added. The class does not have `@since` tag, so it's
inherited from the package, isn't it? The same rule applies to the constructor,
doesn't it?
-
PR Review Comment: https://git.openjdk.org/jdk/pull/19192#discussion_r1618748176