将旧的Java代码转换为kotlin时发生错误。
为了帮助解决这个问题,我用示例代码编写了当前的问题。
abstract class AbClass {
open inner class Test {
}
}
继承AbClass的ExClass
class ExClass : AbClass() {
private class T : AbClass.Test() {
//Error AbClass.Test() UnResolved reference: Test
}
}
为什么我不能获得AbClass.Test()?
[将Java代码转换为Kotlin时就这样。
AbClass在Java中将是这样。当您使用关键字inner
时,表示inner
类可以引用outer
类。
public abstract class AbClass {
public class Test {
}
}
[当扩展AbClass时,您声明类T
时不带inner
关键字,这意味着kotlin将其生成为static class
。基本上,static class
不是指outer class
,这可能在类T
和类Test
之间发生冲突。所以最后,如果您使用关键字inner
,它也应该在类T
中声明。确保像这样声明相同
class ExClass : AbClass() {
private inner class T : AbClass.Test() {
}
}