< prev index next >
test/java/lang/Class/getMethods/StarInheritance.java
Print this page
*** 28,37 ****
--- 28,40 ----
*/
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,77 ****
interface A4 extends B4, C4 {}
interface B4 extends D4 { void m(); }
interface C4 extends D4 {}
interface D4 { void m(); }
public class StarInheritance {
private static int n = 1;
! private static void test(Method [] ma, ArrayList expect) {
System.out.println("Test " + n++);
! if (expect.size() != ma.length) {
! System.err.println(" found methods: " + Arrays.asList(ma));
System.err.println(" expected locations: " + expect);
! throw new RuntimeException("found = " + ma.length
+"; expected = " + expect.size());
}
! for (int i = 0; i < ma.length; i++) {
! Method m = ma[i];
System.out.println(" " + m.toString());
int n;
if (m.getName().equals("m")
&& (n = expect.indexOf(m.getDeclaringClass())) != -1) {
expect.remove(n);
--- 56,100 ----
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<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() != ml.size()) {
! System.err.println(" found methods: " + ml);
System.err.println(" expected locations: " + expect);
! throw new RuntimeException("found = " + ml.size()
+"; expected = " + expect.size());
}
! 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,98 ****
}
}
}
public static void main(String [] args) {
! 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)));
}
}
--- 104,133 ----
}
}
}
public static void main(String [] args) {
! 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<?> [] l_2 = {A_2.class};
! test(A_2.class.getMethods(), new ArrayList<>(Arrays.asList(l_2)));
! Class<?> [] l_3 = {B_3.class, C3.class};
! test(A_3.class.getMethods(), new ArrayList<>(Arrays.asList(l_3)));
! Class<?> [] l_4 = {B_4.class, D4.class};
! test(A_4.class.getMethods(), new ArrayList<>(Arrays.asList(l_4)));
}
}
< prev index next >