Main.java revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1// Copyright 2007 The Android Open Source Project
2
3/**
4 * Test instance creation.
5 */
6public class Main {
7    public static void main(String[] args) {
8        // should succeed
9        try {
10            Class c = Class.forName("LocalClass");
11            Object obj = c.newInstance();
12            System.out.println("LocalClass succeeded");
13        } catch (Exception ex) {
14            System.err.println("LocalClass failed");
15            ex.printStackTrace();
16        }
17
18        // should fail
19        try {
20            Class c = Class.forName("otherpackage.PackageAccess");
21            Object obj = c.newInstance();
22            System.out.println("ERROR: PackageAccess succeeded unexpectedly");
23        } catch (IllegalAccessException iae) {
24            System.out.println("Got expected PackageAccess complaint");
25        } catch (Exception ex) {
26            System.err.println("Got unexpected PackageAccess failure");
27            ex.printStackTrace();
28        }
29
30        LocalClass2.main();
31    }
32}
33
34class LocalClass {
35  // this class has a default constructor with package visibility
36}
37
38
39class LocalClass2 {
40    public static void main() {
41        try {
42            CC.newInstance();
43            System.out.println("LocalClass2 succeeded");
44        } catch (Exception ex) {
45            System.err.println("Got unexpected LocalClass2 failure");
46            ex.printStackTrace();
47        }
48    }
49
50    static class CC {
51        private CC() {}
52
53        static Object newInstance() {
54            try {
55                Class c = CC.class;
56                return c.newInstance();
57            } catch (Exception ex) {
58                ex.printStackTrace();
59                return null;
60            }
61        }
62    }
63}
64
65