【问题标题】:android annotations MyTask_(Context) has private access in MyTask_android annotations MyTask_(Context) 在 MyTask_ 中具有私有访问权限
【发布时间】:2015-03-28 08:53:45
【问题描述】:

我正在使用带有 androidannotations 的 @EBean MyTask 类。我想像这样创建生成类的新实例

myTask = new MyTask_(this);

它给了我错误:

错误:(65, 28) 错误: MyTask_(Context) 在 MyTask_ 中具有私有访问权限

生成的类有一个私有方法:

private MyTask_(Context context) {
    context_ = context;
    init_();
}

问题是,要怎么做才能让android注解可以声明构造函数public?或者我如何访问私有构造函数?

【问题讨论】:

  • 您传递给构造函数的this 参数到底是什么?根据docs“一个@EBean 注释类必须只有一个构造函数。这个构造函数必须没有参数,或者从AndroidAnnotations 2.7 开始,它可能有一个Context 类型的参数。” 。通常,您不会自己调用构造函数,而是让 AA 通过使用 @EBean 注释字段来为您创建带注释的类的实例。
  • 我正在使用 AndroidAnnotations 2.7 和 this = BaseActivity.this
  • 我对 AA 不太熟悉,但你不会在 BaseActivity 类中用 @Bean 注释一个字段,以便注入一个新实例化的实例(假设你没有将MyTask 范围设置为单例)?

标签: android constructor private public android-annotations


【解决方案1】:

一般你不应该自己实例化bean,而是通过@Bean注解将它注入到一个字段中:

@Bean
MyTask injected;

但是,如果你真的需要,你可以使用生成的getInstance_() 方法:

MyTask task = MyTask_.getInstance_(context);

【讨论】:

  • 问题是 MyTask 类的上下文是空的
  • 我不明白第二条评论。如果您想手动调用getInstance_(),您有责任传递相应的Context。但一般来说,你根本不应该调用该方法。
猜你喜欢
  • 2021-12-15
  • 2020-03-01
  • 2013-10-27
  • 2023-03-23
  • 2014-11-24
  • 1970-01-01
  • 2016-05-23
  • 2020-05-07
相关资源
最近更新 更多