On Fri, 9 Apr 2021 13:15:16 GMT, Conor Cleary <ccle...@openjdk.org> wrote:
> ### Description > This fix is part of a previous effort to both cleanup/modernise JNDI code, > the details of which can be seen in > [JDK-8048091](https://bugs.openjdk.java.net/browse/JDK-8048091). A number > JNDI methods under `java.naming` use Anonymous Inner Classes in cases where > only a single object unique to the requirements of the method is used. The > issues these occurrences of AICs cause are highlighted below. > > - AICs, in the cases concerned with this fix, are used where only one > operation is required. While AICs can be useful for more complex > implementations (using interfaces, multiple methods needed, local fields > etc.), Lambdas are better suited here as they result in a more readable and > concise solution. > > ### Fixes > - Where applicable, occurrences of AICs were replaced with lambdas to address > the issues above resulting primarily in more readable/concise code. Looks good. A general reminder about one important difference between an anonymous inner class and a lambda. An anonymous has *identity* but a lambda does not; or only accidentally. None of the uses here require identity. src/java.naming/share/classes/com/sun/jndi/ldap/LdapPoolManager.java line 413: > 411: return AccessController.doPrivileged( > 412: (PrivilegedAction<Long>) () -> Long.getLong(propName, > defVal).longValue() > 413: ); And GetIntegerAction here. Though it only supports an int value. ------------- PR: https://git.openjdk.java.net/jdk/pull/3416