2 * Test for Inner classes and related methods in class Class.
4 * @author Edouard G. Parmelan <egp@free.fr>
7 import java.lang.reflect.Modifier;
10 * Super class of InnerTest that define some inner classes and interfaces.
14 private class privateInstanceClass
17 System.out.println ("InnerBase.privateInstanceClass");
20 public void start() { run(); }
23 private static class privateStaticClass
26 System.out.println ("InnerBase.privatStaticClass");
29 public void start() { run(); }
32 protected class protectedInstanceClass
35 System.out.println ("InnerBase.protectedInstanceClass");
38 public void start() { run(); }
41 protected static class protectedStaticClass
44 System.out.println ("InnerBase.privatStaticClass");
47 public void start() { run(); }
50 public class publicInstanceClass
53 System.out.println ("InnerBase.publicStaticClass");
56 public void start() { run(); }
59 public static class publicStaticClass
62 System.out.println ("InnerBase.publicStaticClass");
65 public void start() { run(); }
68 public static interface publicStaticInterface
73 public interface publicInstanceInterface
80 public class InnerTest
83 public static class Inner
87 private static void printClass(String prefix, Class clazz)
90 System.out.println (prefix + "<null>");
93 int mods = clazz.getModifiers();
94 System.out.println (prefix + clazz + " [" + Integer.toString(mods, 16) + "] " + Modifier.toString (mods));
98 private static void printClasses(String prefix, Class[] classes)
100 if (classes.length == 0) {
101 System.out.println (prefix + "<empty>");
103 for (int i = classes.length; i-- > 0; ) {
104 printClass (prefix, classes[i]);
108 public static void main(String args[])
110 if (args.length == 0) {
111 args = new String[] { "java.lang.Object", "InnerBase", "InnerTest" };
114 for (int i = 0; i < args.length; i++) {
115 String name = args[i];
116 if (name.endsWith (".class")) {
117 name = name.substring (0, name.length() - 6);
120 Class clazz = Class.forName (name);
122 printClass (name + ": declaring: ", clazz.getDeclaringClass());
123 printClasses (name + ": declared: ", clazz.getDeclaredClasses());
124 printClasses (name + ": get: ", clazz.getClasses());
126 catch (Throwable t) {
127 t.printStackTrace(System.out);
134 new protectedInstanceClass() { public void run() {} }.start();
135 new protectedStaticClass() { public void run() {} }.start();
136 new publicInstanceClass() { public void run() {} }.start();
137 new publicStaticClass() { public void run() {} }.start();
144 InnerBase: declared: class InnerBase$privateInstanceClass [2] private
145 InnerBase: declared: class InnerBase$privateStaticClass [a] private static
146 InnerBase: declared: class InnerBase$protectedInstanceClass [4] protected
147 InnerBase: declared: class InnerBase$protectedStaticClass [c] protected static
148 InnerBase: declared: class InnerBase$publicInstanceClass [1] public
149 InnerBase: declared: class InnerBase$publicStaticClass [9] public static
150 InnerBase: declared: interface InnerBase$publicInstanceInterface [609] public abstract static interface
151 InnerBase: declared: interface InnerBase$publicStaticInterface [609] public abstract static interface
152 InnerBase: declaring: <null>
153 InnerBase: get: class InnerBase$publicInstanceClass [1] public
154 InnerBase: get: class InnerBase$publicStaticClass [9] public static
155 InnerBase: get: interface InnerBase$publicInstanceInterface [609] public abstract static interface
156 InnerBase: get: interface InnerBase$publicStaticInterface [609] public abstract static interface
157 InnerTest: declared: class InnerTest$Inner [9] public static
158 InnerTest: declaring: <null>
159 InnerTest: get: class InnerBase$publicInstanceClass [1] public
160 InnerTest: get: class InnerBase$publicStaticClass [9] public static
161 InnerTest: get: class InnerTest$Inner [9] public static
162 InnerTest: get: interface InnerBase$publicInstanceInterface [609] public abstract static interface
163 InnerTest: get: interface InnerBase$publicStaticInterface [609] public abstract static interface
164 java.lang.Object: declared: <empty>
165 java.lang.Object: declaring: <null>
166 java.lang.Object: get: <empty>