方式一
private var tvTitle:TextView?=null
-
方式二
class MainActivity : AppCompatActivity() { private lateinit var tvTitle: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //tvTitle=findViewById(R.id.tv_title) tvTitle.text="hello" } }
不推荐,编译器忽略了其初始化校验,存在空指针异常。
方式三
private val tvTitle by lazy {
findViewById<TextView>(R.id.tv_title)
}
- 推荐,lazy 只有在第一次访问才初始化
- lateinit 只用于变量 var,而 lazy 只用于常量 val