1 class C {}
2 class D extends C implements I {}
3 interface I {}
4 interface J extends I {}
5 
6 public class Class_1
7 {
printIsAssignableFrom(Class a, Class b, boolean c)8   static void printIsAssignableFrom(Class a, Class b, boolean c)
9     {
10       // The field 'c' can be viewed to see the expected value.
11       System.out.println(a.isAssignableFrom(b));
12     }
13 
main(String arg[])14   public static void main (String arg[])
15   {
16     System.out.println("Testing class `Class_1'...");
17     printIsAssignableFrom(C.class, Object.class, false);
18     printIsAssignableFrom(C.class, C.class, true);
19     printIsAssignableFrom(C.class, D.class, true);
20     printIsAssignableFrom(D.class, C.class, false);
21 
22     printIsAssignableFrom(Object.class, int[].class, true);
23     printIsAssignableFrom(int[].class, int[].class, true);
24     printIsAssignableFrom(C[].class, D.class, false);
25     printIsAssignableFrom(C[].class, D[].class, true);
26     printIsAssignableFrom(C[].class, C[][].class, false);
27 
28     printIsAssignableFrom(Object.class, I.class, true);
29     printIsAssignableFrom(I.class, I.class, true);
30     printIsAssignableFrom(D.class, I.class, false);
31     printIsAssignableFrom(I.class, D.class, true);
32 
33     printIsAssignableFrom(D.class, J.class, false);
34     printIsAssignableFrom(J.class, D.class, false);
35 
36     printIsAssignableFrom(I.class, J.class, true);
37     printIsAssignableFrom(J.class, J.class, true);
38     printIsAssignableFrom(J.class, I.class, false);
39 
40     // Returns true iff both Class objects are equal.
41     printIsAssignableFrom(long.class, long.class, true);
42 
43     // Does not work for primitive types in general.
44     printIsAssignableFrom(long.class, int.class, false);
45   }
46 }
47