2017-01-13 35 views
6

我想實現採用Android註解次年春天代碼列表:Android的註釋 - 注射超型

@Autowired 
public initHandlerList(List<Handler> handlerList) { 
    // Do stuff with the list ... 
} 

我同時使用一個接口和一個類嘗試。

bean定義:

@EBean 
public AbstractHandler implements Handler {} 

試圖注入:

@Bean 
public initHandlersList(List<AbstractHandler> handlersList) { 
    // Do stuff with the list ... 
} 

但總是得到了以下錯誤:

Error:(20, 5) error: org.androidannotations.annotations.Bean can only be used on an element annotated with @org.androidannotations.annotations.EBean 

所以我想,因爲列表本身不帶註釋@EBean它不能用作一個Bean ...任何方式來實現這個使用Android Annotati項?

謝謝!

+0

這可能會有所幫助https://github.com/androidannotations/androidannotations/wiki/Enhance-custom-classes – Boldbayar

+0

@Boldbayar謝謝,但我已經閱讀他們的維基,他們沒有顯示任何地方如何做這樣的事情。 。我猜這是不可能與他們的框架,我將不得不寫一些樣板代碼 – Nom1fan

回答

2

對不起,我不能評論,但我的聲譽太低。

我讀了wiki和基於方法的注射,我看到你如何注入豆。我在代碼中可以看到的是,您確實正在創建一個帶有AbstractHandler對象的EBean,但是您正嘗試注入一個未使用@EBean註釋的List對象,您可以刪除列表<>並僅使用AbstractHandler或您可以擴展List實現(如ArrayList)並使用@EBean對其進行註釋。

@EBean 
public class InjectableArrayList<T> extends ArrayList<T>{} 

希望這會有所幫助。

+0

嗨,謝謝你的答案。這是一個不錯的主意,我嘗試過。但它實現的僅僅是注入一個空的數組列表。我想要的是框架實際上注入一個已經填充了所有擴展AbstractHandler的類的實例的列表(就像Spring可以做的那樣)。看來這個框架沒有Spring那麼強大。非常感謝,我很感激! – Nom1fan

+1

我看,是的,這實現了注入沒有元素的列表。正如你評論的,我沒有看到任何解釋這是否可以實現的文檔。我檢查了注射文件,看起來沒有這種類型。也許當時不支持。祝你今天愉快。 – Nord