< prev index next >
test/jdk/java/lang/annotation/typeAnnotations/TestObjectMethods.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -21,11 +21,11 @@
* questions.
*/
/*
* @test
- * @bug 8058202 8212081
+ * @bug 8058202 8212081 8224012
* @summary Test java.lang.Object methods on AnnotatedType objects.
*/
import java.lang.annotation.*;
import java.lang.reflect.*;
@@ -71,10 +71,12 @@
testGetAnnotations(TypeHost.class, false);
testGetAnnotations(AnnotatedTypeHost.class, true);
testWildcards();
+ testFbounds();
+
if (errors > 0) {
throw new RuntimeException(errors + " errors");
}
}
@@ -301,10 +303,11 @@
errors++;
System.err.println("Expected annotations not found.");
}
}
+
private static AnnotatedWildcardType extractWildcard(String methodName) {
try {
return (AnnotatedWildcardType)
(((AnnotatedParameterizedType)(AnnotatedTypeHost.class.getMethod(methodName).
getAnnotatedReturnType())).
@@ -312,10 +315,27 @@
} catch (Exception e) {
throw new RuntimeException(e);
}
}
+ static void testFbounds() {
+ // Make sure equals and hashCode work fine for a type
+ // involving an F-bound, in particular Comparable<E> in
+ // java.lang.Enum:
+ //
+ // class Enum<E extends Enum<E>>
+ // implements Constable, Comparable<E>, Serializable
+
+ AnnotatedType[] types = Enum.class.getAnnotatedInterfaces();
+
+ for (int i = 0; i < types.length; i ++) {
+ for (int j = 0; j < types.length; j ++) {
+ checkTypesForEquality(types[i], types[j], i == j);
+ }
+ }
+ }
+
// The TypeHost and AnnotatedTypeHost classes declare methods with
// the same name and signatures but with the AnnotatedTypeHost
// methods having annotations on their return type, where
// possible.
< prev index next >