JDK 15 RFR of JDK-8230771: Remove terminally deprecated constructors in java.base
Mandy Chung
mandy.chung at oracle.com
Mon Dec 9 18:27:54 UTC 2019
It seems a bit overly cautious to throw AssertionError. JDK has many
private no-arg constructor and it can be as simple as empty
constructor. Just my preference.
Mandy
On 12/9/19 10:16 AM, Joe Darcy wrote:
> Corrected patch:
>
> diff -r 153e5f76551d
> src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java
> ---
> a/src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java
> Mon Dec 09 23:00:13 2019 +0530
> +++
> b/src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java
> Mon Dec 09 10:15:44 2019 -0800
> @@ -43,8 +43,7 @@
> /**
> * Do not call.
> */
> - @Deprecated(forRemoval=true, since="14")
> - public ConstantBootstraps() {}
> + private ConstantBootstraps() {throw new AssertionError();}
>
> // implements the upcall from the JVM,
> MethodHandleNatives.linkDynamicConstant:
> /*non-public*/
> diff -r 153e5f76551d
> src/java.base/share/classes/java/lang/reflect/Modifier.java
> --- a/src/java.base/share/classes/java/lang/reflect/Modifier.java Mon
> Dec 09 23:00:13 2019 +0530
> +++ b/src/java.base/share/classes/java/lang/reflect/Modifier.java Mon
> Dec 09 10:15:44 2019 -0800
> @@ -46,8 +46,7 @@
> /**
> * Do not call.
> */
> - @Deprecated(forRemoval=true, since="14")
> - public Modifier() {}
> + private Modifier() {throw new AssertionError();}
>
>
> /**
>
> -Joe
>
> On 12/9/2019 9:38 AM, Joe Darcy wrote:
>> Doh! Will correct. That is why I want to get the no-arg constructor
>> added as a javac warning (JDK-8071961) ;-)
>>
>> Thanks all for catching this,
>>
>> -Joe
>>
>> On 12/9/2019 9:29 AM, Mandy Chung wrote:
>>> Good catch! Daniel also pointed that out. I overlooked it. It
>>> needs to add back a private no-arg constructor.
>>>
>>> Mandy
>>>
>>> On 12/9/19 9:18 AM, Victor Williams Stafusa da Silva wrote:
>>>> If you remove the deprecated constructor, the compiler will add a
>>>> default one. Wouldn't it be a better idea to make the deprecated
>>>> constructor private and throwing an exception?
>>>>
>>>> Em seg., 9 de dez. de 2019 às 14:13, Mandy Chung
>>>> <mandy.chung at oracle.com <mailto:mandy.chung at oracle.com>> escreveu:
>>>>
>>>> Looks good.
>>>>
>>>> Mandy
>>>>
>>>> On 12/8/19 10:58 AM, Joe Darcy wrote:
>>>> > Hello,
>>>> >
>>>> > Please review this small API changes for JDK 15:
>>>> >
>>>> > JDK-8230771: Remove terminally deprecated constructors in
>>>> java.base
>>>> > CSR: https://bugs.openjdk.java.net/browse/JDK-8235548
>>>> > webrev: http://cr.openjdk.java.net/~darcy/8230771.0/
>>>> >
>>>> > Patch below.
>>>> >
>>>> > Thanks,
>>>> >
>>>> > -Joe
>>>> >
>>>> > ---
>>>> >
>>>> old/src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java
>>>>
>>>>
>>>> > 2019-12-08 10:56:14.223168685 -0800
>>>> > +++
>>>> >
>>>> new/src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java
>>>>
>>>>
>>>> > 2019-12-08 10:56:13.999168685 -0800
>>>> > @@ -40,12 +40,6 @@
>>>> > * @since 11
>>>> > */
>>>> > public final class ConstantBootstraps {
>>>> > - /**
>>>> > - * Do not call.
>>>> > - */
>>>> > - @Deprecated(forRemoval=true, since="14")
>>>> > - public ConstantBootstraps() {}
>>>> > -
>>>> > // implements the upcall from the JVM,
>>>> > MethodHandleNatives.linkDynamicConstant:
>>>> > /*non-public*/
>>>> > static Object makeConstant(MethodHandle bootstrapMethod,
>>>> > ---
>>>> old/src/java.base/share/classes/java/lang/reflect/Modifier.java
>>>> > 2019-12-08 10:56:14.775168685 -0800
>>>> > +++
>>>> new/src/java.base/share/classes/java/lang/reflect/Modifier.java
>>>> > 2019-12-08 10:56:14.555168685 -0800
>>>> > @@ -44,13 +44,6 @@
>>>> > */
>>>> > public class Modifier {
>>>> > /**
>>>> > - * Do not call.
>>>> > - */
>>>> > - @Deprecated(forRemoval=true, since="14")
>>>> > - public Modifier() {}
>>>> > -
>>>> > -
>>>> > - /**
>>>> > * Return {@code true} if the integer argument includes the
>>>> > * {@code public} modifier, {@code false} otherwise.
>>>> > *
>>>> >
>>>>
>>>
More information about the core-libs-dev
mailing list