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