2011-08-03 19 views
0

在Java中有任何圖書館獲取字段名稱,而不使用任何魔法字符串,例如,對於下面的類如何獲得一個方法名保持不使用魔法字符串

class User 
{ 
int id; 

int getId() 
{ 
return id; 
} 

void setId(int id) 
{ 
this.id = id; 
} 
} 

現在,我要的是這樣的事情,

String fieldName = Utility.getFieldName(User.getId()); 

,應返回文本「身份證」

我知道這是無法通過常規手段實現的,但我想,如果可以通過用達因包裝User類來完成聚酰胺代理(所以這將是更喜歡

String fieldName = Utility.getFieldName(Utility.createProxy<User>().getId()); 

)和攔截方法調用,並從堆棧獲取方法的名稱,並使用一些螺紋連接時的實用工具類看了看它像一個簡單的方法調用。有誰知道是否有任何圖書館來做這種類型的操作?

回答

2

這可以使用reflection來完成。

+0

但它會使用魔術字符串,這是我需要擺脫 –

+0

是的,但是當你調用'User.getId()'你得到一個int作爲返回值,而不是字段。 – MByD

+0

是的,這就是爲什麼我想知道是否有辦法通過創建動態代理來攔截方法並使用調用堆棧獲取方法名稱。 –

相關問題