< 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 >