zoukankan      html  css  js  c++  java
  • Kotlin之类属性延迟初始化

    类属性延迟初始化

    在Android中声明UI类型变量,由于Kotlin的类型安全机制必须进行初始化,比如:

    Java:

     1 public class TestActivity extends AppCompatActivity {
     2 
     3     private TextView mTvNmae;
     4 
     5     @Override
     6     protected void OnCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9 
    10         mTvNmae = findViewById(R.id.name);
    11     }
    12 }

    Kotlin:

    解决方法1 初始化为Null:

     1 class MainActivity : AppCompatActivity() {
     2 
     3     private var mTvName: TextView? = null
     4 
     5     override fun onCreate(savedInstanceState: Bundle?) {
     6         super.onCreate(savedInstanceState)
     7         setContentView(R.layout.activity_main)
     8 
     9         mTvName = findViewById(R.id.name)
    10     }
    11 }

    初始化问题解决了,但是使用上非常不友好。

    解决方法2 延迟初始化:

     1 class MainActivity : AppCompatActivity() {
     2 
     3     private lateinit var mTvName: TextView
     4 
     5     override fun onCreate(savedInstanceState: Bundle?) {
     6         super.onCreate(savedInstanceState)
     7         setContentView(R.layout.activity_main)
     8 
     9         mTvName = findViewById(R.id.name)
    10     }
    11 }

    这方式也解决了初始化问题,就是mTvName是一个可变类型变量,在初始化后基本上不会改变变量的赋值了。

    解决方法3 延迟初始化 lazy (推荐方式):

     1 class MainActivity : AppCompatActivity() {
     2 
     3     private val mTvName: TextView by lazy {
     4         findViewById(R.id.name)
     5     }
     6 
     7     override fun onCreate(savedInstanceState: Bundle?) {
     8         super.onCreate(savedInstanceState)
     9         setContentView(R.layout.activity_main)
    10     }
    11 }
  • 相关阅读:
    bzoj3295: [Cqoi2011]动态逆序对
    bzoj3262: 陌上花开
    bzoj1176: [Balkan2007]Mokia
    bzoj1935: [Shoi2007]Tree 园丁的烦恼
    [APIO / CTSC2007]数据备份 --- 贪心
    [APIO2007]风铃 --- 贪心
    [NOI2015]寿司晚宴 --- 状压DP
    [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)
    [NOI2009]诗人小G --- DP + 决策单调性
    [HNOI2008]玩具装箱TOY --- DP + 斜率优化 / 决策单调性
  • 原文地址:https://www.cnblogs.com/naray/p/12992772.html
Copyright © 2011-2022 走看看