JDK 8 RFR: more core libs raw warnings cleanup

Joel Borggren-Franck joel.franck at oracle.com
Tue Nov 12 12:20:52 UTC 2013


This also allows you to get rid of the raw type suppression I think, the
attached code compiles.

Thanks Remi,

cheers
/Joel

diff --git a/src/share/classes/java/lang/reflect/Proxy.java b/src/share/classes/java/lang/reflect/Proxy.java
--- a/src/share/classes/java/lang/reflect/Proxy.java
+++ b/src/share/classes/java/lang/reflect/Proxy.java
@@ -490,13 +490,14 @@
      * a key used for proxy class with any number of implemented interfaces
      * (used here for 3 or more only)
      */
+    @SuppressWarnings("unchecked")
     private static final class KeyX {
         private final int hash;
         private final WeakReference<Class<?>>[] refs;
 
         KeyX(Class<?>[] interfaces) {
             hash = Arrays.hashCode(interfaces);
-            refs = new WeakReference[interfaces.length];
+            refs = (WeakReference<Class<?>>[]) new WeakReference<?>[interfaces.length];
             for (int i = 0; i < interfaces.length; i++) {
                 refs[i] = new WeakReference<>(interfaces[i]);
             }

On 2013-11-12, Remi Forax wrote:
> On 11/12/2013 10:51 AM, Chris Hegarty wrote:
> >Looks ok to me Joe.
> >
> >-Chris.
> 
> A small issue,
>   refs = (WeakReference<Class<?>>[])new WeakReference[interfaces.length];
> should be
>   refs = (WeakReference<Class<?>>[])new
> WeakReference<?>[interfaces.length];
> 
> otherwise, looks good.
> 
> Rémi
> 
> >
> >On 12/11/13 09:28, Joe Darcy wrote:
> >>Hello,
> >>
> >>Please review the patch below which would remove another batch of raw
> >>type javac lint warnings from the core libraries.
> >>
> >>No signatures of public or protected methods in the Java SE
> >>specification have been modified. Regression tests in affected
> >>areas pass.
> >>
> >>Thanks,
> >>
> >>-Joe
> >>
> >>diff -r 9fcb07df1c92 src/share/classes/java/io/ObjectOutputStream.java
> >>--- a/src/share/classes/java/io/ObjectOutputStream.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/io/ObjectOutputStream.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -1248,7 +1248,7 @@
> >>          handles.assign(unshared ? null : desc);
> >>
> >>          Class<?> cl = desc.forClass();
> >>-        Class[] ifaces = cl.getInterfaces();
> >>+        Class<?>[] ifaces = cl.getInterfaces();
> >>          bout.writeInt(ifaces.length);
> >>          for (int i = 0; i < ifaces.length; i++) {
> >>              bout.writeUTF(ifaces[i].getName());
> >>diff -r 9fcb07df1c92 src/share/classes/java/io/ObjectStreamClass.java
> >>--- a/src/share/classes/java/io/ObjectStreamClass.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/io/ObjectStreamClass.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -1,5 +1,5 @@
> >>  /*
> >>- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights
> >>reserved.
> >>+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights
> >>reserved.
> >>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> >>   *
> >>   * This code is free software; you can redistribute it and/or
> >>modify it
> >>@@ -1746,7 +1746,7 @@
> >>                  dout.writeUTF("()V");
> >>              }
> >>
> >>-            Constructor[] cons = cl.getDeclaredConstructors();
> >>+            Constructor<?>[] cons = cl.getDeclaredConstructors();
> >>              MemberSignature[] consSigs = new
> >>MemberSignature[cons.length];
> >>              for (int i = 0; i < cons.length; i++) {
> >>                  consSigs[i] = new MemberSignature(cons[i]);
> >>diff -r 9fcb07df1c92 src/share/classes/java/lang/reflect/Proxy.java
> >>--- a/src/share/classes/java/lang/reflect/Proxy.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/lang/reflect/Proxy.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -494,9 +494,10 @@
> >>          private final int hash;
> >>          private final WeakReference<Class<?>>[] refs;
> >>
> >>+        @SuppressWarnings({"rawtypes", "unchecked"})
> >>          KeyX(Class<?>[] interfaces) {
> >>              hash = Arrays.hashCode(interfaces);
> >>-            refs = new WeakReference[interfaces.length];
> >>+            refs = (WeakReference<Class<?>>[])new
> >>WeakReference[interfaces.length];
> >>              for (int i = 0; i < interfaces.length; i++) {
> >>                  refs[i] = new WeakReference<>(interfaces[i]);
> >>              }
> >>diff -r 9fcb07df1c92 src/share/classes/java/nio/file/TempFileHelper.java
> >>--- a/src/share/classes/java/nio/file/TempFileHelper.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/nio/file/TempFileHelper.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -81,7 +81,7 @@
> >>                                 String prefix,
> >>                                 String suffix,
> >>                                 boolean createDirectory,
> >>-                               FileAttribute[] attrs)
> >>+                               FileAttribute<?>[] attrs)
> >>          throws IOException
> >>      {
> >>          if (prefix == null)
> >>@@ -155,7 +155,7 @@
> >>      static Path createTempFile(Path dir,
> >>                                 String prefix,
> >>                                 String suffix,
> >>-                               FileAttribute[] attrs)
> >>+                               FileAttribute<?>[] attrs)
> >>          throws IOException
> >>      {
> >>          return create(dir, prefix, suffix, false, attrs);
> >>@@ -167,7 +167,7 @@
> >>       */
> >>      static Path createTempDirectory(Path dir,
> >>                                      String prefix,
> >>-                                    FileAttribute[] attrs)
> >>+                                    FileAttribute<?>[] attrs)
> >>          throws IOException
> >>      {
> >>          return create(dir, prefix, null, true, attrs);
> >>diff -r 9fcb07df1c92 src/share/classes/java/util/IdentityHashMap.java
> >>--- a/src/share/classes/java/util/IdentityHashMap.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/util/IdentityHashMap.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -1243,7 +1243,7 @@
> >>                      if (ti >= size) {
> >>                          throw new ConcurrentModificationException();
> >>                      }
> >>-                    a[ti++] = (T) new
> >>AbstractMap.SimpleEntry(unmaskNull(key), tab[si + 1]);
> >>+                    a[ti++] = (T) new
> >>AbstractMap.SimpleEntry<>(unmaskNull(key), tab[si + 1]);
> >>                  }
> >>              }
> >>              // fewer elements than expected or concurrent modification
> >>from other thread detected
> >>diff -r 9fcb07df1c92 src/share/classes/java/util/logging/Logger.java
> >>--- a/src/share/classes/java/util/logging/Logger.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/util/logging/Logger.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -351,7 +351,7 @@
> >>                                           ? caller.getClassLoader()
> >>                                           : null);
> >>          if (callersClassLoader != null) {
> >>-            this.callersClassLoaderRef = new
> >>WeakReference(callersClassLoader);
> >>+            this.callersClassLoaderRef = new
> >>WeakReference<>(callersClassLoader);
> >>          }
> >>      }
> >>
> >>diff -r 9fcb07df1c92 src/share/classes/java/util/logging/Logging.java
> >>--- a/src/share/classes/java/util/logging/Logging.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/java/util/logging/Logging.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -1,5 +1,5 @@
> >>  /*
> >>- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights
> >>reserved.
> >>+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights
> >>reserved.
> >>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> >>   *
> >>   * This code is free software; you can redistribute it and/or
> >>modify it
> >>@@ -55,11 +55,11 @@
> >>      }
> >>
> >>      public List<String> getLoggerNames() {
> >>-        Enumeration loggers = logManager.getLoggerNames();
> >>+        Enumeration<String> loggers = logManager.getLoggerNames();
> >>          ArrayList<String> array = new ArrayList<>();
> >>
> >>          for (; loggers.hasMoreElements();) {
> >>-            array.add((String) loggers.nextElement());
> >>+            array.add(loggers.nextElement());
> >>          }
> >>          return array;
> >>      }
> >>diff -r 9fcb07df1c92 src/share/classes/sun/misc/Cleaner.java
> >>--- a/src/share/classes/sun/misc/Cleaner.java    Sat Nov 09 04:21:28
> >>2013 +0400
> >>+++ b/src/share/classes/sun/misc/Cleaner.java    Tue Nov 12 00:51:15
> >>2013 -0800
> >>@@ -1,5 +1,5 @@
> >>  /*
> >>- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights
> >>reserved.
> >>+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights
> >>reserved.
> >>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> >>   *
> >>   * This code is free software; you can redistribute it and/or
> >>modify it
> >>@@ -57,14 +57,14 @@
> >>   */
> >>
> >>  public class Cleaner
> >>-    extends PhantomReference
> >>+    extends PhantomReference<Object>
> >>  {
> >>
> >>      // Dummy reference queue, needed because the PhantomReference
> >>constructor
> >>      // insists that we pass a queue.  Nothing will ever be placed on
> >>this queue
> >>      // since the reference handler invokes cleaners explicitly.
> >>      //
> >>-    private static final ReferenceQueue dummyQueue = new
> >>ReferenceQueue();
> >>+    private static final ReferenceQueue<Object> dummyQueue = new
> >>ReferenceQueue<>();
> >>
> >>      // Doubly-linked list of live cleaners, which prevents the
> >>cleaners
> >>      // themselves from being GC'd before their referents
> >>@@ -119,6 +119,7 @@
> >>      /**
> >>       * Creates a new cleaner.
> >>       *
> >>+     * @param  ob the referent object to be cleaned
> >>       * @param  thunk
> >>       *         The cleanup code to be run when the cleaner is
> >>invoked.  The
> >>       *         cleanup code is run directly from the reference-handler
> >>thread,
> >>diff -r 9fcb07df1c92 src/share/classes/sun/misc/ProxyGenerator.java
> >>--- a/src/share/classes/sun/misc/ProxyGenerator.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/sun/misc/ProxyGenerator.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -384,7 +384,7 @@
> >>      private String className;
> >>
> >>      /** proxy interfaces */
> >>-    private Class[] interfaces;
> >>+    private Class<?>[] interfaces;
> >>
> >>      /** proxy class access flags */
> >>      private int accessFlags;
> >>diff -r 9fcb07df1c92 src/share/classes/sun/rmi/rmic/Main.java
> >>--- a/src/share/classes/sun/rmi/rmic/Main.java    Sat Nov 09 04:21:28
> >>2013 +0400
> >>+++ b/src/share/classes/sun/rmi/rmic/Main.java    Tue Nov 12 00:51:15
> >>2013 -0800
> >>@@ -494,7 +494,7 @@
> >>                                               extDirsArg);
> >>          BatchEnvironment result = null;
> >>          try {
> >>-            Class[] ctorArgTypes =
> >>{OutputStream.class,ClassPath.class,Main.class};
> >>+            Class<?>[] ctorArgTypes =
> >>{OutputStream.class,ClassPath.class,Main.class};
> >>              Object[] ctorArgs = {out,classPath,this};
> >>              Constructor<? extends BatchEnvironment> constructor =
> >>                  environmentClass.getConstructor(ctorArgTypes);
> >>diff -r 9fcb07df1c92 src/share/classes/sun/rmi/server/LoaderHandler.java
> >>--- a/src/share/classes/sun/rmi/server/LoaderHandler.java    Sat Nov 09
> >>04:21:28 2013 +0400
> >>+++ b/src/share/classes/sun/rmi/server/LoaderHandler.java    Tue Nov 12
> >>00:51:15 2013 -0800
> >>@@ -692,7 +692,7 @@
> >>       * Define a proxy class in the given class loader.  The proxy
> >>       * class will implement the given interfaces Classes.
> >>       */
> >>-    private static Class<?> loadProxyClass(ClassLoader loader, Class[]
> >>interfaces)
> >>+    private static Class<?> loadProxyClass(ClassLoader loader,
> >>Class<?>[] interfaces)
> >>          throws ClassNotFoundException
> >>      {
> >>          try {
> >>@@ -719,7 +719,7 @@
> >>       */
> >>      private static ClassLoader loadProxyInterfaces(String[]
> >>interfaces,
> >>                                                     ClassLoader loader,
> >>-                                                   Class[] classObjs,
> >>+ Class<?>[] classObjs,
> >>                                                     boolean[]
> >>nonpublic)
> >>          throws ClassNotFoundException
> >>      {
> >>diff -r 9fcb07df1c92
> >>src/share/classes/sun/rmi/server/UnicastServerRef.java
> >>--- a/src/share/classes/sun/rmi/server/UnicastServerRef.java Sat Nov
> >>09 04:21:28 2013 +0400
> >>+++ b/src/share/classes/sun/rmi/server/UnicastServerRef.java Tue Nov
> >>12 00:51:15 2013 -0800
> >>@@ -299,7 +299,7 @@
> >>              logCall(obj, method);
> >>
> >>              // unmarshal parameters
> >>-            Class[] types = method.getParameterTypes();
> >>+            Class<?>[] types = method.getParameterTypes();
> >>              Object[] params = new Object[types.length];
> >>
> >>              try {
> >>diff -r 9fcb07df1c92 src/share/classes/sun/rmi/server/Util.java
> >>--- a/src/share/classes/sun/rmi/server/Util.java    Sat Nov 09 04:21:28
> >>2013 +0400
> >>+++ b/src/share/classes/sun/rmi/server/Util.java    Tue Nov 12 00:51:15
> >>2013 -0800
> >>@@ -87,7 +87,7 @@
> >>          Collections.synchronizedMap(new WeakHashMap<Class<?>,
> >>Void>(11));
> >>
> >>      /** parameter types for stub constructor */
> >>-    private static final Class[] stubConsParamTypes = {
> >>RemoteRef.class };
> >>+    private static final Class<?>[] stubConsParamTypes = {
> >>RemoteRef.class };
> >>
> >>      private Util() {
> >>      }
> >>@@ -143,7 +143,7 @@
> >>          }
> >>
> >>          final ClassLoader loader = implClass.getClassLoader();
> >>-        final Class[] interfaces = getRemoteInterfaces(implClass);
> >>+        final Class<?>[] interfaces = getRemoteInterfaces(implClass);
> >>          final InvocationHandler handler =
> >>              new RemoteObjectInvocationHandler(clientRef);
> >>
> 



More information about the core-libs-dev mailing list