import org.scannotation.ClasspathUrlFinder; import org.scannotation.archiveiterator.Filter; import org.scannotation.archiveiterator.StreamIterator; import org.scannotation.archiveiterator.StreamsIterator; import java.lang.annotation.Annotation; import java.net.URL; import java.util.ArrayList; import java.util.List; public class ScannotationExample { public static void main(String[] args) { List<URL> urls = ClasspathUrlFinder.findClassPaths(); Filter filter = Filter.includeAll(); StreamsIterator streams = new StreamIterator(urls, filter); try { while (streams.next()) { URL url = streams.getStreamUrl(); List<Class<?>> classes = new ArrayList<>(); AnnotationDB db = new AnnotationDB(); db.scanArchives(url); for (String className : db.getClasses()) { classes.add(Class.forName(className)); } for (Class<?> clazz : classes) { Annotation[] annotations = clazz.getAnnotations(); for (Annotation annotation : annotations) { System.out.println(clazz.getName() + " has annotation: " + annotation); } Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { System.out.println(clazz.getName() + " has method: " + method.getName()); } Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println(clazz.getName() + " has field: " + field.getName()); } } } } catch (Exception e) { e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文