public final class AnnotationDetector extends Object
AnnotationDetector
reads Java Class File (".class") files and reports the
encountered annotations via a simple, developer friendly API.
A Java Class File consists of a stream of 8-bit bytes. All 16-bit, 32-bit, and 64-bit
quantities are constructed by reading in two, four, and eight consecutive 8-bit
bytes, respectively. Multi byte data items are always stored in big-endian order,
where the high bytes come first. In the Java and Java 2 platforms, this format is
supported by interfaces DataInput
and DataOutput
.
A class file consists of a single ClassFile structure:
ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; } Where: u1 unsigned byteReferences:DataInput.readUnsignedByte()
u2 unsigned shortDataInput.readUnsignedShort()
u4 unsigned intDataInput.readInt()
Annotations are stored as Attributes (i.e. "RuntimeVisibleAnnotations" and "RuntimeInvisibleAnnotations").
tv.cntt:annovention:1.2
;
ClassPathScanningCandidateComponentProvider
Modifier and Type | Class and Description |
---|---|
static interface |
AnnotationDetector.FieldReporter
A
Reporter for field annotations. |
static interface |
AnnotationDetector.MethodReporter
A
Reporter for method annotations. |
static interface |
AnnotationDetector.Reporter
Reporter is the base interface, used to report the detected annotations. |
static interface |
AnnotationDetector.TypeReporter
A
Reporter for type annotations. |
Constructor and Description |
---|
AnnotationDetector(AnnotationDetector.Reporter reporter)
Create a new
AnnotationDetector , reporting the detected annotations
to the specified Reporter . |
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Reclaim memory.
|
void |
detect()
Report all Java ClassFile files available on the class path.
|
void |
detect(File... filesOrDirectories)
Report all Java ClassFile files available from the specified files
and/or directories, including sub directories.
|
void |
detect(String... packageNames)
Report all Java ClassFile files available on the class path within
the specified packages and sub packages.
|
public AnnotationDetector(AnnotationDetector.Reporter reporter)
AnnotationDetector
, reporting the detected annotations
to the specified Reporter
.public void detect() throws IOException
IOException
detect(File...)
public final void detect(String... packageNames) throws IOException
IOException
detect(File...)
public void detect(File... filesOrDirectories) throws IOException
CAFEBABE
are silently ignored.IOException
public void destroy()
Copyright © 2012-2015. All Rights Reserved.