2017-01-13 36 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