[12] RFR: 8214170: ResourceBundle.Control.newBundle should throw IllegalAccessException when constructor of the resource bundle is not public. (original) (raw)

Mandy Chung mandy.chung at oracle.com
Tue Nov 27 22:55:47 UTC 2018


On 11/27/18 2:43 PM, naoto.sato at oracle.com wrote:

If no-arg constructor does not exist, the javadoc does not specify its behavior (or I'm missing it?).   I believe the current behavior is consistent with JDK 8 behavior which throws NoSuchMethodException.  We should fix the spec to clarify no no-arg constructor case. The javadoc is not specifically mention for the no-arg constructor case, but specifies to throw the Error/Exception wrt the instantiation failure: "If a resource bundle can't be instantiated due to an unexpected error, the error must be reported by throwing an Error or Exception rather than simply returning null." The current behavior is inconsistent with the releases prior to JDK9, as it silently ignores NoSuchMethodException and returns null, while JDK8 throws IAE.

There are two cases:

  1. PrivateConstructorRB has a private no-arg constructor

This is the bug this issue reports.

  1. PrivateConstructorRB does not have any no-arg constructor (you have to create a new test case for it)

I believe the behavior is not changed in JDK 9.  It throws NoSuchMethodException (not ignored).

Mandy



More information about the core-libs-dev mailing list