在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  C/ java如何獲取調(diào)用此方法的方法上的注解信息?

java如何獲取調(diào)用此方法的方法上的注解信息?

需求:想要有一個(gè)公共的函數(shù),這個(gè)函數(shù)能夠根據(jù)調(diào)用方法上的注解的不同執(zhí)行不同的動(dòng)作。
如:

public void method(){
   //獲取到invoke方法上的Message注解
}

@Message("Some message")
public void invoke(){
    method();
}

嘗試過(guò)使用Thread.currentThread().getStackTrace()[2].getMethodName()來(lái)獲取這個(gè)方法名,但是這個(gè)只能獲取簡(jiǎn)單的方法名'invoke'。所以有沒(méi)有辦法可以實(shí)現(xiàn)這個(gè)效果?

用反射的方法不是很行的通,因?yàn)?code>Thread.currentThread().getStackTrace()[2].getMethodName()只能獲取到方法名,不能獲取到方法的傳入?yún)?shù)。如果'invoke'方法有參數(shù),如

public void invoke(String name){
  System.out.println(name);
}

那么getClass().getMethod("invoke");方法就無(wú)法反射獲取到'invoke'方法了。因?yàn)檫@樣他就會(huì)查找一個(gè)無(wú)參的'invoke'方法,然后找不到就拋出'NoSuchMethodException'

回答
編輯回答
慢半拍

可以通過(guò)反射獲取注解
這邊有示例http://blog.csdn.net/bao19901...

2017年1月19日 23:46
編輯回答
我不懂

既然你能獲取到 invoke 的名字了,那可以繼續(xù)獲取到 Method 再用 Method 獲取 Annotation

Method m = getClass().getMethod("invoke");
m.getAnnotations();
2017年4月27日 07:01