package paramAnno;
import java.lang.reflect.Method;
import java.lang.annotation.*;
public class testParamAnno {
/**
* @param args
* @throws SecurityException
* @throws NoSuchMethodException
*/
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
// TODO Auto-generated method stub
kingClass buGeiQian=new kingClass();
Class siMaGuangZaiGang=buGeiQian.getClass();
Method wangYuYang=siMaGuangZaiGang.getDeclaredMethod("doSomethingElse",String.class);
Annotation[][] parameterAnnotations = wangYuYang.getParameterAnnotations();
Class[] parameterTypes = wangYuYang.getParameterTypes();
int i=0;
for(Annotation[] annotations : parameterAnnotations){
Class parameterType = parameterTypes[i++];
for(Annotation annotation : annotations){
if(annotation instanceof xinAnnotation){
xinAnnotation myAnnotation = (xinAnnotation) annotation;
System.out.println("param: " + parameterType.getName());
System.out.println("name : " + myAnnotation.name());
System.out.println("value: " + myAnnotation.value());
}
}
}
}
}
输出:
param: java.lang.String
name : 嫖客
value: 薛蛮子
package paramAnno;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)//对函数参数的修饰
public @interface xinAnnotation {
public String name();
public String value();
}
package paramAnno;
public class kingClass {
public static void doSomethingElse(
@xinAnnotation(name="嫖客", value="薛蛮子") String parameter){
}
}