aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/internal/dynalink/beans/ClassString.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/internal/dynalink/beans/ClassString.java')
-rw-r--r--src/jdk/internal/dynalink/beans/ClassString.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/jdk/internal/dynalink/beans/ClassString.java b/src/jdk/internal/dynalink/beans/ClassString.java
index d6c6da08..dfcb3786 100644
--- a/src/jdk/internal/dynalink/beans/ClassString.java
+++ b/src/jdk/internal/dynalink/beans/ClassString.java
@@ -96,6 +96,11 @@ import jdk.internal.dynalink.support.TypeUtilities;
* @author Attila Szegedi
*/
final class ClassString {
+ /**
+ * An anonymous inner class used solely to represent the "type" of null values for method applicability checking.
+ */
+ static final Class<?> NULL_CLASS = (new Object() { /* Intentionally empty */ }).getClass();
+
private final Class<?>[] classes;
private int hashCode;
@@ -203,6 +208,9 @@ final class ClassString {
}
private static boolean canConvert(LinkerServices ls, Class<?> from, Class<?> to) {
+ if(from == NULL_CLASS) {
+ return !to.isPrimitive();
+ }
return ls == null ? TypeUtilities.isMethodInvocationConvertible(from, to) : ls.canConvert(from, to);
}
}