max*_*ron 9 android annotations kotlin dagger butterknife
我最近将我的大部分项目转换为kotlin.现在我遇到了一些似乎与注释库有关的异常错误.毋庸置疑,它并没有发生在Java中.
我将描述这些案例 - 一个在Dagger,一个在Butterknife.
1.当具有@Provides相同名称的不同模型中的2 种方法时.例如,在具有"provideFooOrBar"方法的文件"FooProvider.kt"中
@Module
class FooProvider(private val view: FooActivity) {
...
@Provides @FooScope fun provideView() = view
@Provides @FooScope fun provideFooOrBar() = Foo()
}
Run Code Online (Sandbox Code Playgroud)
并使用相同的方法名称另一个文件"BarProvider.kt"
@Module
class BarProvider(private val view: BarActivity) {
...
@Provides @BarScope fun provideView() = view
@Provides @BarScope fun provideFooOrBar() = Bar()
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Dagger无法生成一些工厂库,我得到以下编译错误:
Error:(27, 32) error: cannot find symbol class FooProvider_ProvideFooOrBarFactory
可以在https://github.com/maxandron/DaggerIssue325找到重现该问题的示例项目
2.使用Butterknife时这是一个问题.@Bind在两个不同的类中有两个带注释的变量时 - 其中一个只是在运行时无法初始化而没有任何编译错误!
例如,如果我有:
class FooActivity {
@Bind(R.id.foo) lateinit var mFoo: View
}
class NotFooActivity {
@Bind(R.id.not_foo) lateinit var mFoo: View
}
Run Code Online (Sandbox Code Playgroud)
然后其中一个(或两个?)将无法初始化而没有任何错误.导致kotlin.UninitializedPropertyAccessException: lateinit property mFoo has not been initialized异常时,现场被访问时抛出.
这是我在配置Kotlin时做错了还是kotlin bug?
先感谢您!罗恩
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |