java 获取调用此方法的方法的注解

Python014

java 获取调用此方法的方法的注解,第1张

import java.lang.annotation.Retention

import java.lang.annotation.RetentionPolicy

@Retention(value=RetentionPolicy.RUNTIME)

public @interface MyAnnotation {

String name()

}

public class AnnonTestA {

public void methodA(){

}

@MyAnnotation(name="111")

public void methodA(String a) throws Exception{

AnnonTestB.methodB("methodA",String.class)

}

} import java.lang.annotation.Annotation

import java.lang.reflect.Method

public class AnnonTestB {

public static void methodB(String methodName, Class<?>... parameterTypes) throws Exception {

AnnonTestA annonTestA = new AnnonTestA()

// 获取AnnotationTest2的Class实例

Class<AnnonTestA> c = AnnonTestA.class

// 获取需要处理的方法Method实例

Method method = c.getMethod(methodName, parameterTypes)

Method[] methods = c.getMethods()

// 判断该方法是否包含MyAnnotation注解

if (method.isAnnotationPresent(MyAnnotation.class)) {

// 获取该方法的MyAnnotation注解实例

MyAnnotation myAnnotation = method

.getAnnotation(MyAnnotation.class)

// 执行该方法

// method.invoke(annonTestA, "12345")

// 获取myAnnotation

String value1 = myAnnotation.name()

System.out.println(value1)

}

// 获取方法上的所有注解

Annotation[] annotations = method.getAnnotations()

for (Annotation annotation : annotations) {

System.out.println(annotation)

}

}

} import java.io.*

import java.lang.annotation.Annotation

import java.lang.reflect.Method

public class TestString {

public static void main(String[] args) throws Exception {

AnnonTestA annonTestA = new AnnonTestA()

annonTestA.methodA("123")

}

}

代码都给上了,不明白再追问吧。

参考地址:http://blog.csdn.net/bao19901210/article/details/17201173

心情好 告诉你吧 Thread.currentThread().getStackTrace()[1]是你当前方法执行堆栈 Thread.currentThread().getStackTrace()[2]就是上一级的方法堆栈 以此类推