假设我们正处于一种方法的中间。 而且我有两种编程风格的选择。 选项A:每次需要访问资源时,使用getContext().getResources() public void doSomeStuffA(){ //… getContext().getResources().getDrawable(R.drawable.ic_launcher); getContext().getResources().getDrawable(R.drawable.ic_arrow); //… } 选项B :将getContext().getResources()在变量中。 public void doSomeStuffB(){ //… Resources r = getContext().getResources(); r.getDrawable(R.drawable.ic_launcher); r.getDrawable(R.drawable.ic_arrow); //… } 哪种风格更好?
今天我在Kotlin Docs中遇到了这个部分。 被称为“聪明的演员”,Kotlin似乎“在需要时自动插入(安全)演员”: 在很多情况下,不需要在Kotlin中使用显式的转换运算符,因为编译器会跟踪不可变值的is-checks,并在需要时自动插入(安全)转换: fun demo(x: Any) { if (x is String) { print(x.length) // x is automatically cast to String } } 我不明白在这个例子中“智能铸造”是做什么的。 似乎没有什么需要铸造,因为x将始终是字符串,因此x.length将始终工作,不需要铸造。 print线上发生了什么? 提前致谢!