There are four types of annotations that you need to know when writing annotations:
@Target
Indicates where the annotation can be used, and the possible ElementType parameters are:
CONSTRUCTOR: declaration of the constructor
field: domain declarations (including enum instances)
local_variable: local variable declaration
Method : Methods Declaration
Package : Packet Declaration
PARAMETER: parameter declaration
Type : class, interface (including annotation type) or enum sound
@Retention
Indicates at what level the annotation information needs to be saved. The optional retentionpolicy parameters include:
SOURCE: annotations are discarded by the compiler
class: annotations are available in the class file, but are discarded by the VM
RUNTIME: The VM retains annotations during the run, so the information for the annotations can be read through the reflection mechanism.
@Document
To include annotations in the Javadoc
@Inherited
Allow subclasses to inherit annotations from parent class
Define an annotation:
Package com.rhythmk.annotation; Import Java.lang.annotation.ElementType; Import java.lang.annotation.Retention; Import Java.lang.annotation.RetentionPolicy; Import = elementtype.type) @Retention (retentionpolicy.runtime) public @Interface rservice { default "working"; Runenum Run ();}
Annotations use:
@RService (value={"v1", "v2"},run=runenum.run)publicinterface userservice { String Finduserbyid (int ID); String Saveuser (String userName);}
Determine if the class has an annotation by isannotationpresent:
Class<?> uscls = UserService. class ; // determine if the change class uses the annotation boolean isannotationrservice = uscls . Isannotationpresent (rservice. class);
Gets the value of this class annotation configuration:
Rservice rservice = UserService. class. getannotation (rservice. Class); for (String v:rservice.value ()) { System.out.println ("Annotated value:" + v); } System.out.println ("enum:" + Rservice.run ());
RHYTHMK Step-by-step JAVA (19): Annotations annotation