[NEW BUG][JDK11] Use Collections.emptyEnumeration() where possible

Claes Redestad claes.redestad at oracle.com
Mon May 7 12:35:25 UTC 2018


Hi, looks like a reasonable cleanup.

I would expect very few applications actually use these, but at the
very least we'd save a few bytes of compiled bytecode.

/Claes

On 2018-05-06 17:19, Christoph Dreis wrote:
> Hi,
>
> I just noticed two places - namely in JarFile and JarVerifier - that could
> make use of Collections.emptyEnumeration().
>
> Let me know what you think. I'd be happy if this is sponsored in case it's
> considered worthwile.
>
> Cheers,
> Christoph
>
> ============= PATCH ==============
> diff -r 7238cb613dc5 src/java.base/share/classes/java/util/jar/JarFile.java
> --- a/src/java.base/share/classes/java/util/jar/JarFile.java    Sun May 06
> 00:42:59 2018 +0200
> +++ b/src/java.base/share/classes/java/util/jar/JarFile.java    Sun May 06
> 17:10:42 2018 +0200
> @@ -42,6 +42,7 @@
>   import java.security.CodeSource;
>   import java.security.cert.Certificate;
>   import java.util.ArrayList;
> +import java.util.Collections;
>   import java.util.Enumeration;
>   import java.util.List;
>   import java.util.Locale;
> @@ -1095,16 +1096,7 @@
>           if (includeUnsigned) {
>               return unsignedEntryNames();
>           } else {
> -            return new Enumeration<>() {
> -
> -                public boolean hasMoreElements() {
> -                    return false;
> -                }
> -
> -                public String nextElement() {
> -                    throw new NoSuchElementException();
> -                }
> -            };
> +            return Collections.emptyEnumeration();
>           }
>       }
>
> diff -r 7238cb613dc5
> src/java.base/share/classes/java/util/jar/JarVerifier.java
> --- a/src/java.base/share/classes/java/util/jar/JarVerifier.java        Sun
> May 06 00:42:59 2018 +0200
> +++ b/src/java.base/share/classes/java/util/jar/JarVerifier.java        Sun
> May 06 17:10:42 2018 +0200
> @@ -684,7 +684,7 @@
>           }
>
>           final List<CodeSigner[]> signersReq = req;
> -        final Enumeration<String> enum2 = (matchUnsigned) ?
> unsignedEntryNames(jar) : emptyEnumeration;
> +        final Enumeration<String> enum2 = matchUnsigned ?
> unsignedEntryNames(jar) : Collections.emptyEnumeration();
>
>           return new Enumeration<>() {
>
> @@ -769,16 +769,6 @@
>               }
>           };
>       }
> -    private Enumeration<String> emptyEnumeration = new
> Enumeration<String>() {
> -
> -        public boolean hasMoreElements() {
> -            return false;
> -        }
> -
> -        public String nextElement() {
> -            throw new NoSuchElementException();
> -        }
> -    };
>



More information about the core-libs-dev mailing list