< prev index next >
test/java/lang/Class/getMethods/StarInheritance.java
Print this page
@@ -28,10 +28,13 @@
*/
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
// D.m
interface A1 extends B1, C1 {}
interface B1 extends D1 {}
interface C1 extends D1 {}
@@ -53,25 +56,45 @@
interface A4 extends B4, C4 {}
interface B4 extends D4 { void m(); }
interface C4 extends D4 {}
interface D4 { void m(); }
+// D.m
+abstract class A_1 extends B_1 implements C1 {}
+abstract class B_1 implements D1 {}
+
+// A_.m
+abstract class A_2 extends B_2 implements C2 { public abstract void m(); }
+abstract class B_2 implements D2 {}
+
+// B_.m, C.m
+abstract class A_3 extends B_3 implements C3 {}
+abstract class B_3 implements D3 { public abstract void m(); }
+
+// B_.m, D.m
+abstract class A_4 extends B_4 implements C4 {}
+abstract class B_4 implements D4 { public abstract void m(); }
+
public class StarInheritance {
private static int n = 1;
- private static void test(Method [] ma, ArrayList expect) {
+ private static void test(Method [] ma, ArrayList<Class<?>> expect) {
+ // filter out Object methods
+ List<Method> ml = Stream.of(ma)
+ .filter(m -> m.getDeclaringClass() != Object.class)
+ .collect(Collectors.toList());
+
System.out.println("Test " + n++);
- if (expect.size() != ma.length) {
- System.err.println(" found methods: " + Arrays.asList(ma));
+ if (expect.size() != ml.size()) {
+ System.err.println(" found methods: " + ml);
System.err.println(" expected locations: " + expect);
- throw new RuntimeException("found = " + ma.length
+ throw new RuntimeException("found = " + ml.size()
+"; expected = " + expect.size());
}
- for (int i = 0; i < ma.length; i++) {
- Method m = ma[i];
+ for (Method m : ml) {
System.out.println(" " + m.toString());
int n;
if (m.getName().equals("m")
&& (n = expect.indexOf(m.getDeclaringClass())) != -1) {
expect.remove(n);
@@ -81,18 +104,30 @@
}
}
}
public static void main(String [] args) {
- Class [] l1 = {D1.class};
- test(A1.class.getMethods(), new ArrayList(Arrays.asList(l1)));
+ Class<?> [] l1 = {D1.class};
+ test(A1.class.getMethods(), new ArrayList<>(Arrays.asList(l1)));
+
+ Class<?> [] l2 = {A2.class};
+ test(A2.class.getMethods(), new ArrayList<>(Arrays.asList(l2)));
+
+ Class<?> [] l3 = {B3.class, C3.class};
+ test(A3.class.getMethods(), new ArrayList<>(Arrays.asList(l3)));
+
+ Class<?> [] l4 = {B4.class, D4.class};
+ test(A4.class.getMethods(), new ArrayList<>(Arrays.asList(l4)));
+
+ Class<?> [] l_1 = {D1.class};
+ test(A_1.class.getMethods(), new ArrayList<>(Arrays.asList(l_1)));
- Class [] l2 = {A2.class};
- test(A2.class.getMethods(), new ArrayList(Arrays.asList(l2)));
+ Class<?> [] l_2 = {A_2.class};
+ test(A_2.class.getMethods(), new ArrayList<>(Arrays.asList(l_2)));
- Class [] l3 = {B3.class, C3.class};
- test(A3.class.getMethods(), new ArrayList(Arrays.asList(l3)));
+ Class<?> [] l_3 = {B_3.class, C3.class};
+ test(A_3.class.getMethods(), new ArrayList<>(Arrays.asList(l_3)));
- Class [] l4 = {B4.class, D4.class};
- test(A4.class.getMethods(), new ArrayList(Arrays.asList(l4)));
+ Class<?> [] l_4 = {B_4.class, D4.class};
+ test(A_4.class.getMethods(), new ArrayList<>(Arrays.asList(l_4)));
}
}
< prev index next >