1
3 package jminusminus;
4
5
9 abstract class Member {
10
15 public String name() {
16 return member().getName();
17 }
18
19
24 public Type declaringType() {
25 return Type.typeFor(member().getDeclaringClass());
26 }
27
28
33 public boolean isStatic() {
34 return java.lang.reflect.Modifier.isStatic(member().getModifiers());
35 }
36
37
42 public boolean isPublic() {
43 return java.lang.reflect.Modifier.isPublic(member().getModifiers());
44 }
45
46
51 public boolean isProtected() {
52 return java.lang.reflect.Modifier.isProtected(member().getModifiers());
53 }
54
55
60 public boolean isPrivate() {
61 return java.lang.reflect.Modifier.isPrivate(member().getModifiers());
62 }
63
64
69 public boolean isAbstract() {
70 return java.lang.reflect.Modifier.isAbstract(member().getModifiers());
71 }
72
73
78 public boolean isFinal() {
79 return java.lang.reflect.Modifier.isFinal(member().getModifiers());
80 }
81
82
87 public abstract String toDescriptor();
88
89
94 protected abstract java.lang.reflect.Member member();
95 }
96
97
100 class Constructor extends Member {
101 private java.lang.reflect.Constructor constructor;
103
104
109 public Constructor(java.lang.reflect.Constructor constructor) {
110 this.constructor = constructor;
111 }
112
113
116 public String toDescriptor() {
117 String descriptor = "(";
118 for (Class paramType : constructor.getParameterTypes()) {
119 descriptor += Type.typeFor(paramType).toDescriptor();
120 }
121 descriptor += ")V";
122 return descriptor;
123 }
124
125
128 protected java.lang.reflect.Member member() {
129 return constructor;
130 }
131 }
132
133
136 class Field extends Member {
137 private java.lang.reflect.Field field;
139
140
145 public Field(java.lang.reflect.Field field) {
146 this.field = field;
147 }
148
149
154 public Type type() {
155 return Type.typeFor(field.getType());
156 }
157
158
161 public String toDescriptor() {
162 return type().toDescriptor();
163 }
164
165
168 protected java.lang.reflect.Member member() {
169 return field;
170 }
171 }
172
173
176 class Method extends Member {
177 private java.lang.reflect.Method method;
179
180
185 public Method(java.lang.reflect.Method method) {
186 this.method = method;
187 }
188
189
194 public Type returnType() {
195 return Type.typeFor(method.getReturnType());
196 }
197
198
201 public String toDescriptor() {
202 String descriptor = "(";
203 for (Class paramType : method.getParameterTypes()) {
204 descriptor += Type.typeFor(paramType).toDescriptor();
205 }
206 descriptor += ")" + Type.typeFor(method.getReturnType()).toDescriptor();
207 return descriptor;
208 }
209
210
213 protected java.lang.reflect.Member member() {
214 return method;
215 }
216 }