Skip to content

Commit 8b9e4da

Browse files
committed
* Adding Annotation examples.
1 parent 5608b1c commit 8b9e4da

File tree

1 file changed

+88
-1
lines changed

1 file changed

+88
-1
lines changed

README.md

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ ResolvedTypeWithMembers arrayListTypeWithMembers = memberResolver.resolve(arrayL
137137
ResolvedConstructor[] arrayListConstructors = arrayListTypeWithMembers.getConstructors();
138138
```
139139

140-
#### Resolving Particular Members
140+
#### Resolving Particular Members (i.e., Filtering)
141141

142142
##### Resolve `ArrayList<String>#size()` Method
143143

@@ -165,4 +165,91 @@ memberResolver.setFieldFilter(new Filter<RawField>() {
165165
});
166166
ResolvedTypeWithMembers arrayListTypeWithMembers = memberResolver.resolve(arrayListType, null, null);
167167
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
168255
```

0 commit comments

Comments
 (0)