kotlin之变量的可空与非空
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自http://javaexception.com/archives/218
kotlin之变量的可空与非空
上面一篇文章,介绍了kotlin的变量与常量,以及修饰为常量或者是变量的评估标准。本篇文章主要想说的是一个变量的可空与非空。从字面意思上来看,可空就是允许变量的值是null,非空就是不允许变量的值是null。
那么怎么知道一个变量应该被设置为可空的还是非空的呢?
一般而言,对于集合类,比如List或者是MutableList,直接设置为非空类型就好了。比如private var list: MutableList<String> = mutableListOf()
对于普通的Model或者是Android中的View或Fragment,设置为可空就好,它们一般是在后续的程序流程中被赋值的。比如View类,一个TextView或ImageView需要在onCreate()方法体内被赋值,在此之前,是不可能知道它的值的,所以,我们一般这样声明,private var textView: TextView? = null 。 Fragment也是一样的,我们在类的成员变量里面只能做一个申明,具体的赋值,是在Android Activity生命周期方法中,所以,写法是这样的。private var fragment: Fragment? = null。
如果对于普通Model或者是View这样的类型,不想设置为可空,那么也是有办法的,比如委托的方式,以及lateinit的方式。但是一般情况下,还是设置为可空。除非你真的想要非空,才设置为非空类型,非空类型如何声明呢,举个String类型的例子,private var content: String = “hello”
如果大家有真正在生产环境中实践过kotlin的话,那么应该很有感触,会碰到一些别扭的地方,比如textView?.setOnClickListener{//todo} textView?.text = “hello”类似这样的代码块。我们明确的知道textView不会为空,但是由于语法的原因,一旦声明为可空,后面就必须带上?.的判断代码。这个我们再下一篇给出一种解决办法,来规避View的这种问题,将View定义为非空类型。
kotlin相关文章
kotlin之变量与常量 http://javaexception.com/archives/217
kotlin之变量的可空与非空的更多相关文章
- MySQL之数据表的插入内容 空与非空(六)
NULL与NOT NULL mysql> CREATE TABLE tb2( -> usename VARCHAR(20) NOT NULL, -> age TINYINT UNSI ...
- java空和非空判断
public static boolean isEmpty(String str){ if("".equals(str)||str==null){ return true; }el ...
- kotlin之变量与常量
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/217 kotlin之变量与常量 最近开始做新产品,于是乎用 ...
- 【js】批量判断表单中的文本框非空
方法一: <script type=”text/javascript”> /* * 批量验证表单非空 * 需要非空验证控件的样式class=”mustadd” */ $(".mu ...
- Firebird 列可空非空修改
2018-12-04 至少到Firebird 3.0.4 已经添加了设置可空 和 非空的语法:如 -- 删除非空(设置为可空) ALTER TABLE TECH ALTER label drop NO ...
- MySQL之非空约束(NOT NULL)
定义: MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不 ...
- Javabean非空变量校验工具
摘要 调研java Class getDeclaredFields() 与getFields()的区别,设计请求参数为Javabean时,基于反射机制校验其中非空变量的公共方法. java Class ...
- Kotlin——从无到有系列教程(5): 你该知道的Kotlin可空类型、空安全(null)、类型转换等特性
在我们熟知的Java中,定义一个变量可以默认不赋值,因为Java的系统会给我们默认赋一个默认值,并且Java可定义一个赋值为null的变量,这样在使用这个变量的时候都会去显示判断该变量是否为null. ...
- JS中if判断 非空即为真 非0即为真
1.字符串参与判断时:非空即为真判断字符串为空的方法if(str!=null && str!=undefined && str !='')可简写为if(!str){ ...
随机推荐
- 音视频入门-14-JPEG文件格式详解
* 音视频入门文章目录 * JPEG 文件格式解析 JPEG 文件使用的数据存储方式有多种.最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF ...
- 4.Netty执行IO事件和非IO任务
回顾NioEventLoop的run方法流程 IO事件与非IO任务 处理IO事件 处理非IO任务 聚合定时任务到普通任务队列 从普通队列中获取任务 计算任务执行的超时时间 安全执行 计算是否超时 总结 ...
- java this,super简单理解
*****this****** 表示对当前对象的引用. 作用:1.区分实例变量和局部变量(this.name----->实例变量name) 2.将当前对象当做参数传递给其它对象和方法.利用thi ...
- re实战记录
re实战记录 针对网页中的空格符 一般使用的.,但是它不能匹配\n,所以使用[\s\S]或者[\d\D]匹配所有字符 import re l1=r''' <div class="thu ...
- LAMP架构介绍、MySQL、MariaDB介绍、MySQL安装
5月23日任务 课程内容: 11.1 LAMP架构介绍11.2 MySQL.MariaDB介绍11.3/11.4/11.5 MySQL安装扩展mysql5.5源码编译安装 http://www.ami ...
- NSURLConnection发送GET请求
// ViewController.m // 04-掌握-NSURLConnection发送GET请求 // // Created by xiaomage on 16/2/22. // Copyrig ...
- JS 输出指定范围内的随机数
/* 自定义函数 */ function GetRandomNum(Min,Max){ var Range = Max - Min; var Rand = Math.random(); return( ...
- 深入 .NET Core 基础 - 1:deps.json, runtimeconfig.json 以及 dll
深入 .NET Core 基础:deps.json, runtimeconfig.json 以及 dll 原文地址:https://natemcmaster.com/blog/2017/12/21/n ...
- js5——页面转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法
Bug描述: 今天做开发时遇到一个elementUI存在的bug. 当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配 ...