KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > AnonymousJavac


1 /* AnonymousJavac Copyright (C) 1999 Jochen Hoenicke.
2  *
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation; either version 2, or (at your option)
6  * any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; see the file COPYING. If not, write to
15  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
16  *
17  * $Id: AnonymousJavac.java,v 1.6 2000/01/30 16:49:58 jochen Exp $
18  */

19
20
21 import java.util.Vector JavaDoc;
22
23 public class AnonymousJavac {
24     class Inner {
25     int var = 3;
26
27     public void test() {
28         final long longVar = 5;
29         final double dblVar = 3;
30         class Hello {
31         int var = (int) longVar;
32
33         {
34             System.err.println("all constructors");
35         }
36
37         Hello() {
38             System.err.println("construct");
39         }
40         Hello(String JavaDoc info) {
41             System.err.println("construct: "+info);
42         }
43
44         private void hello() {
45             this.hashCode();
46             Inner.this.hashCode();
47             Inner.this.var = var;
48             AnonymousJavac.this.hashCode();
49             System.err.println("HelloWorld: "+dblVar);
50         }
51         };
52         final Hello hi = new Hello();
53         final Hello ho = new Hello("ho");
54         final Object JavaDoc o = new Object JavaDoc() {
55         int blah = 5;
56         Hello hii = hi;
57         Hello hoo = new Hello("hoo");
58
59         {
60             System.err.println("Anonymous Constructor speaking");
61         }
62
63         public String JavaDoc toString() {
64             this.hii.hello();
65             hi.hello();
66             return Integer.toHexString(AnonymousJavac.this.hashCode()
67                            +blah);
68         }
69
70         {
71             System.err.println("Anonymous Constructor continues");
72         }
73
74         };
75         Object JavaDoc p = new Object JavaDoc() {
76         public String JavaDoc toString() {
77             return o.toString();
78         }
79         };
80
81         Inner blub1 = new Inner("Inner param") {
82         Hello hii = hi;
83
84         public void test() {
85             System.err.println("overwritten: "+hii+hi);
86         }
87         };
88
89         Inner blub2 = new AnonymousJavac().new Inner("Inner param") {
90         Hello hii = hi;
91
92         public void test() {
93             System.err.println("overwritten: "+hii);
94             AnonymousJavac.this.hashCode();
95         }
96         };
97
98         class Hi extends Inner {
99         public Hi() {
100             super("Hi World");
101         }
102         }
103
104         Vector JavaDoc v = new Vector JavaDoc(hi.var, var) {
105         Hello hii = hi;
106         public Object JavaDoc clone() {
107             return super.clone();
108         }
109         };
110
111         Hi hu = new Hi();
112         
113     }
114     Inner (String JavaDoc str) {
115     }
116     }
117
118
119     public void test() {
120         class Hello {
121         int var = 4;
122
123         Hello() {
124             System.err.println("construct");
125         }
126         Hello(String JavaDoc info) {
127             System.err.println("construct: "+info);
128         }
129
130         public void hello() {
131             this.hashCode();
132             AnonymousJavac.this.hashCode();
133             System.err.println("HelloWorld");
134         }
135         };
136         final Hello hi = new Hello();
137         final Hello ho = new Hello("ho");
138         final Object JavaDoc o = new Object JavaDoc() {
139         int blah = 5;
140         Hello hii = hi;
141
142         public String JavaDoc toString() {
143             this.hii.hello();
144             hi.hello();
145             return Integer.toHexString(AnonymousJavac.this.hashCode()
146                            +blah);
147         }
148         };
149         Object JavaDoc p = new Object JavaDoc() {
150         public String JavaDoc toString() {
151             return o.toString();
152         }
153         };
154
155         Inner blub1 = new Inner("Inner param") {
156         public void test() {
157             System.err.println("overwritten");
158         }
159         };
160
161         Inner blub2 = new AnonymousJavac().new Inner("Inner param") {
162         public void test() {
163             System.err.println("overwritten");
164         }
165         };
166
167         class Hi extends Inner {
168         public Hi() {
169             super("Hi World");
170         }
171         }
172
173         Vector JavaDoc v = new Vector JavaDoc(hi.var, new Inner("Hi").var) {
174         public Object JavaDoc clone() {
175             return super.clone();
176         }
177         };
178
179         Hi hu = new Hi();
180     }
181 }
182
Popular Tags