Android注释 - 注入超类类型列表

时间:2017-01-13 08:23:57

标签: java android spring annotations

我正在尝试使用Android Annotations实现以下Spring代码:

@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 Annotations实现这个的任何方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

抱歉,我无法发表评论,但声誉太低。

我读了wiki并且在基于方法的注入下我看到了如何注入bean。我在你的代码中看到的是你确实在创建一个带有AbstractHandler对象的EBean,但是你试图注入一个没有用@EBean注释的List对象,你可以删除List&lt;&gt;并且只需使用AbstractHandler,或者您可以扩展List实现(如ArrayList)并使用@EBean注释它。

var data = {
  prop1: "I am prop 1",
  prop2: "I am prop 2"
};
function clickHandler () {
  var prop = this.getAttribute("data-property");
  console.log(data[prop]); // <-- Dynamically access object properties with [] syntax
}

var buttons = document.querySelectorAll("[data-property]");
for (var i = 0; i < buttons.length; i++) {
  var button = buttons[i];
  button.addEventListener("click", clickHandler);
}

希望这会有所帮助。