@@ -137,7 +137,7 @@ ResolvedTypeWithMembers arrayListTypeWithMembers = memberResolver.resolve(arrayL
137
137
ResolvedConstructor [] arrayListConstructors = arrayListTypeWithMembers. getConstructors();
138
138
```
139
139
140
- #### Resolving Particular Members
140
+ #### Resolving Particular Members (i.e., Filtering)
141
141
142
142
##### Resolve ` ArrayList<String>#size() ` Method
143
143
@@ -165,4 +165,91 @@ memberResolver.setFieldFilter(new Filter<RawField>() {
165
165
});
166
166
ResolvedTypeWithMembers arrayListTypeWithMembers = memberResolver. resolve(arrayListType, null , null );
167
167
ResolvedField sizeField = arrayListTypeWithMembers. getMemberFields()[0 ];
168
+ ```
169
+
170
+ #### Resolving Members and their Annotations
171
+
172
+ ``` java
173
+ @Retention (RetentionPolicy . RUNTIME )
174
+ public @interface Marker { }
175
+
176
+ @Retention (RetentionPolicy . RUNTIME )
177
+ @Inherited
178
+ public @interface MarkerA { }
179
+
180
+ public class SomeClass {
181
+ @Marker @MarkerA
182
+ public void someMethod () { }
183
+ }
184
+ public class SomeSubclass extends SomeClass {
185
+ @Override
186
+ public void someMethod () { }
187
+ }
188
+ ```
189
+
190
+ ##### Resolve ` SomeClass#someMethod() ` 's Annotations
191
+
192
+ ``` java
193
+ ResolvedType someType = typeResolver. resolve(SomeClass . class);
194
+ MemberResolver memberResolver = new MemberResolver (typeResolver);
195
+ memberResolver. setMethodFilter(new Filter<RawMethod > () {
196
+ @Override public boolean include (RawMethod element ) {
197
+ return " someMethod" . equals(element. getName());
198
+ }
199
+ });
200
+ ResolvedTypeWithMembers someTypeWithMembers = memberResolver. resolve(someType, new new AnnotationConfiguration .StdConfiguration (AnnotationInclusion . INCLUDE_BUT_DONT_INHERIT ), null );
201
+ ResolvedMethod someMethod = someTypeWithMembers. getMemberMethods()[0 ];
202
+ Marker marker = someMethod. get(Marker . class); // marker != null
203
+ MarkerA markerA = someMethod. get(MarkerA . class); // markerA != null
204
+ ```
205
+
206
+ ##### Resolve ` SomeSubclass#someMethod() ` 's Annotations
207
+
208
+ ``` java
209
+ ResolvedType someSubclassType = typeResolver. resolve(SomeSubclass . class);
210
+ MemberResolver memberResolver = new MemberResolver (typeResolver);
211
+ memberResolver. setMethodFilter(new Filter<RawMethod > () {
212
+ @Override public boolean include (RawMethod element ) {
213
+ return " someMethod" . equals(element. getName());
214
+ }
215
+ });
216
+ ResolvedTypeWithMembers someSubclassTypeWithMembers = memberResolver. resolve(someSubclassType, new new AnnotationConfiguration .StdConfiguration (AnnotationInclusion . INCLUDE_BUT_DONT_INHERIT ), null );
217
+ ResolvedMethod someMethod = someSubclassTypeWithMembers. getMemberMethods()[0 ];
218
+ Marker marker = someMethod. get(Marker . class); // marker == null
219
+ MarkerA markerA = someMethod. get(MarkerA . class); // markerA == null
220
+ Override override = someMethod. get(Override . class); // override != null
221
+ ```
222
+
223
+ ##### Resolve ` SomeSubclass#someMethod() ` 's Annotations Including @Inherited
224
+
225
+ ``` java
226
+ ResolvedType someSubclassType = typeResolver. resolve(SomeSubclass . class);
227
+ MemberResolver memberResolver = new MemberResolver (typeResolver);
228
+ memberResolver. setMethodFilter(new Filter<RawMethod > () {
229
+ @Override public boolean include (RawMethod element ) {
230
+ return " someMethod" . equals(element. getName());
231
+ }
232
+ });
233
+ ResolvedTypeWithMembers someSubclassTypeWithMembers = memberResolver. resolve(someSubclassType, new new AnnotationConfiguration .StdConfiguration (AnnotationInclusion . INCLUDE_AND_INHERIT_IF_INHERITED ), null );
234
+ ResolvedMethod someMethod = someSubclassTypeWithMembers. getMemberMethods()[0 ];
235
+ Marker marker = someMethod. get(Marker . class); // marker == null
236
+ MarkerA markerA = someMethod. get(MarkerA . class); // markerA != null
237
+ Override override = someMethod. get(Override . class); // override != null
238
+ ```
239
+
240
+ ##### Resolve ` SomeSubclass#someMethod() ` 's Annotations Including All
241
+
242
+ ``` java
243
+ ResolvedType someSubclassType = typeResolver. resolve(SomeSubclass . class);
244
+ MemberResolver memberResolver = new MemberResolver (typeResolver);
245
+ memberResolver. setMethodFilter(new Filter<RawMethod > () {
246
+ @Override public boolean include (RawMethod element ) {
247
+ return " someMethod" . equals(element. getName());
248
+ }
249
+ });
250
+ ResolvedTypeWithMembers someSubclassTypeWithMembers = memberResolver. resolve(someSubclassType, new new AnnotationConfiguration .StdConfiguration (AnnotationInclusion . INCLUDE_AND_INHERIT ), null );
251
+ ResolvedMethod someMethod = someSubclassTypeWithMembers. getMemberMethods()[0 ];
252
+ Marker marker = someMethod. get(Marker . class); // marker != null
253
+ MarkerA markerA = someMethod. get(MarkerA . class); // markerA != null
254
+ Override override = someMethod. get(Override . class); // override != null
168
255
```
0 commit comments