Kotlin Companion Objection 未解决的引用
Kotlin Companion Objection unresolved references
我有一个带有伴随对象的 Kotlin class,它可以看到父 class 的某些字段,但看不到其他字段。 Android Studio 中没有导入选项。
class A{
var a = 1
var b = 2
companion object {
a += 1// visible and imported
b += 1// unresolved reference
}
}
我不想在伴随对象中创建这个变量。
您不能从静态上下文(伴侣)访问实例变量,这与 Java 代码
相同
你完全错了。
您根本无法访问伴生对象中 class 的成员。但是您可以在 class.
中使用伙伴的成员
如果您查看 kotlin 字节码,您会看到 Companion 对象编译为
public static final class Companion {
private Companion() {
}
// $FF: synthetic method
public Companion(DefaultConstructorMarker $constructor_marker) {
this();
}
}
由于 Companion 是 static class
,它可以在没有声明它的 class 的情况下存在。
因此,在您的情况下,您无法访问 a 和 b,因为它们可能不存在。
您也无法访问它们,但可能您遇到了 IDE 错误并且它不会给您错误
Android Studio imported A class variables. In imports i see import package.A.a, but not import package.A.b
import package.A.a
对于 class 属性 a
根本没有意义,并且伴随对象不需要 import
来自 class 无论如何它都是伴侣。我最好的猜测是它是从另一个包中的 object
导入的。
我有一个带有伴随对象的 Kotlin class,它可以看到父 class 的某些字段,但看不到其他字段。 Android Studio 中没有导入选项。
class A{
var a = 1
var b = 2
companion object {
a += 1// visible and imported
b += 1// unresolved reference
}
}
我不想在伴随对象中创建这个变量。
您不能从静态上下文(伴侣)访问实例变量,这与 Java 代码
相同你完全错了。
您根本无法访问伴生对象中 class 的成员。但是您可以在 class.
中使用伙伴的成员如果您查看 kotlin 字节码,您会看到 Companion 对象编译为
public static final class Companion {
private Companion() {
}
// $FF: synthetic method
public Companion(DefaultConstructorMarker $constructor_marker) {
this();
}
}
由于 Companion 是 static class
,它可以在没有声明它的 class 的情况下存在。
因此,在您的情况下,您无法访问 a 和 b,因为它们可能不存在。
您也无法访问它们,但可能您遇到了 IDE 错误并且它不会给您错误
Android Studio imported A class variables. In imports i see import package.A.a, but not import package.A.b
import package.A.a
对于 class 属性 a
根本没有意义,并且伴随对象不需要 import
来自 class 无论如何它都是伴侣。我最好的猜测是它是从另一个包中的 object
导入的。