2014-09-06 36 views
1

有什麼方法可以訪問消費者表達式上方法的註釋嗎?Java 8:獲取消費者<?>基礎函數註釋

public void <T> addListener(Consumer<T> consumer) 
{ 
    consumer.getClass().getAnnotation(Handler.class); // Like this 
} 

@Handler 
public void myListener(Integer x) { 
} 

addListener<Integer>(this::myListener); 
+0

鑑於「消費者」是一個功能接口,因此它可以被分配lambda表達式 - 並且您不能給lambda表達式註釋 - 原因會表示否,但是我會等待其他人澄清 – 2014-09-06 17:02:35

+0

請注意,您在'Class'實例上調用'getAnnotation',而不是在'Method'實例上調用(如果此方法有效,將需要這樣做)。 – 2014-09-06 17:07:11

+0

@SotiriosDelimanolis可以通過反射訪問方法實例嗎? – 2014-09-06 17:08:48

回答

5

你得到的是不與@Handler -annotated方法的類的實例。這應該是顯而易見的—該類甚至沒有執行Consumer。您將得到Consumer的臨時實施,其方法委託人myListener()。因此,對於你的問題的回答是純粹的概念上的「否」。