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