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

Reply via email to