import java
import java
import java
import java
import java
import java
import java
import java
@Target(ElementType
// 用於構造方法
@Retention(RetentionPolicy
// 在運行時加載到Annotation到JVM中(這個一定不能丟掉
@interface Constructor_Annotation {
String value() default
}
@Target( { ElementType
// 用於字段
@Retention(RetentionPolicy
// 在運行時加載到Annotation到JVM中
@interface Field_Method_Parameter_Annotation {
Class type() default void
String describ(); // 定義一個沒有默認值的String成員
}
public class AnnotationTest {
@Field_Method_Parameter_Annotation(describ =
// 注釋字段
int id;
@Field_Method_Parameter_Annotation(describ =
// 注釋字段
String name;
@Constructor_Annotation()
// 采用默認構造方法
public AnnotationTest() {
}
@Constructor_Annotation(
// 注釋構造方法
public AnnotationTest(
// 注釋構造方法參數
@Field_Method_Parameter_Annotation(describ =
this
this
}
@Field_Method_Parameter_Annotation(describ =
public int getId() {
return id;
}
@Field_Method_Parameter_Annotation(describ =
// 成員type
public void setId(
// 注釋參數
@Field_Method_Parameter_Annotation(describ =
this
}
@Field_Method_Parameter_Annotation(describ =
public String getName() {
return name;
}
@Field_Method_Parameter_Annotation(describ =
public void setName(@Field_Method_Parameter_Annotation(describ =
this
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto
// 構造方法
Constructor[] declaredConstructor = AnnotationTest
for (int i =
Constructor constructor = declaredConstructor[i]; // 遍歷構造方法
if (constructor
{
Constructor_Annotation ca = (Constructor_Annotation) constructor
System
}
Annotation[][] parameterAnnotations = constructor
for (int j =
int length = parameterAnnotations[j]
if (length ==
{
System
} else {
for (int k =
// 獲得參數注釋
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation) parameterAnnotations[j][k];
System
System
}
}
}
System
}
// 字段
System
Field[] declaredFields = AnnotationTest
for (int i =
Field field = declaredFields[i];
// 查看是否具有指定類型的注釋
if (field
Field_Method_Parameter_Annotation fa = (Field_Method_Parameter_Annotation) field
System
System
}
}
// 方法
System
Method[] methods = AnnotationTest
for (int i =
Method method = methods[i];
// 查看是否指定注釋
if (method
{
Field_Method_Parameter_Annotation ma = (Field_Method_Parameter_Annotation) method
System
System
}
Annotation[][] parameterAnnotations = method
for (int j =
int length = parameterAnnotations[j]
if (length ==
System
} else {
for (int k =
// 獲得指定的注釋
Field_Method_Parameter_Annotation pa = (Field_Method_Parameter_Annotation) parameterAnnotations[j][k];
System
System
}
}
}
System
}
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26396.html