为什么我可以在Kotlin中定义一个没有类的变量?

我在文件myClass.kt中定义了一个var b,它不包含任何类,应用程序可以正常运行。

看来var b就像Java中的static var一样,对吧?

主要

package com.example.dagger.kotlin.ui class HomeActivity : DemoActivity() { @Inject lateinit var locationManager: LocationManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) (application as DemoApplication).component.inject(this) // TODO Do something with the injected dependencies here locationInfo.text = "Injected LocationManager:\n$locationManager" Toast.makeText(this, b, Toast.LENGTH_LONG).show(); } } 

myClass.kt

 package com.example.dagger.kotlin.ui var b="New Girl" 

如果你反编译生成的.class文件,你会得到:

 public final class myClassKt { @NotNull public static final String getB() { return b; } public static final void setB(@NotNull String b) { ... } @NotNull private static String b = "New Girl"; } 

所以答案是,你得到一个private static字段, static访问方法(获取和设置)