1、空类型安全 1.1、可空类型正确用法 kotlin是强类型判断的,每一个对象都有可以为空和不可以为空之分。...= -1){ //做一些操作 } 上面代码看上去很简单,定义了一个 User类型的属性mUser,是可以为null的。在if条件中通过判断年级是否等于-1 来做一下操作。...我们在写这段代码的时候想的可能是:当mUser不为null,而且年级不是-1的时候,通过条件判断,然后做一下操作。 但是在kotlin中,当mUser为null时,mUser?....意味着「有一个潜在未处理的 KotlinNullPointerException 在这里」。特别是在多线程开发环境中,而java代码又缺少了对null的强检查,这就更容易会出现空异常了。...,并且注意: 在Person中name的类型是String,也就是说是不允许name=null的 输出结果: null 是不是有些奇怪,感觉意外绕过了Kotlin的空类型检查。
org.apache.commons.lang.StringUtils isBlank:字符串是否为空 (trim后判断) isEmpty:字符串是否为空 (不trim并判断) equals:字符串是否相等...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...isEmpty:是否为空 select:根据条件筛选集合元素 transform:根据指定方法处理集合元素,类似List的map() filter:过滤元素,雷瑟List的filter() find:...相关的PropertyUtils getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问...copyProperties:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType
isBlank:字符串是否为空 (trim后判断) isEmpty:字符串是否为空 (不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串...,但不抛异常 getContentCharset:获取内容的编码 五. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断) isEmpty...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 十五
完整性约束可以分为如下类型:约束类型描述非空约束(NOT NULL)指定列是否可以为NULL,只能在建表语句中关于列的描述后指定非空约束。...外键的值必须在主键或唯一键内存在。检查性约束(Check)要求对应列满足指定的条件。# 非空约束默认情况下,一个表中的所有列都允许空值,使用NOT NULL约束可以指定列不允许为空值。...DELETE SET NULL 删除置空(DELETE SET NULL)是指当父表被删除时,对应被引用键值在子表中的所有行的外键被设置成NULL。...UPDATE SET NULL 更新置空(UPDATE SET NULL)是指当父表更新时,对应被引用键值在子表中的所有行的外键被设置成NULL。...# 检查性约束检查约束具备强制执行具体的完整性规则的能力,对指定列或列集创建检查性约束,可以保证表中的数据一定满足指定的条件。如果DML语句违反了检查性约束的条件,执行会报错。
---- 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。...,但不抛异常 getContentCharset:获取内容的编码 五. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断) isEmpty...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 十五.
大家好,又见面了,我是你们的朋友全栈君。 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。...一样,但不抛异常 getContentCharset:获取内容的编码 五. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型
,但不抛异常 getContentCharset:获取内容的编码 五. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断) isEmpty...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 十五....:设置对象属性值 populate:根据Map给属性复制 copyPeoperty:复制单个值,从一个对象到另一个对象 cloneBean:克隆bean实例 现在你只要了解了以上16种最流行的工具类方法
isBlank:字符串是否为空 (trim后判断) isEmpty:字符串是否为空 (不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串...,但不抛异常 getContentCharset:获取内容的编码 5. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断) isEmpty...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 15.
,但不抛异常 getContentCharset:获取内容的编码 五. org.apache.commons.lang3.StringUtils isBlank:字符串是否为空 (trim后判断)...hasText:检查字符串中是否包含文本 hasLength:检测字符串是否长度大于0 isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null) commaDelimitedStringToArray...getProperty:获取对象属性值 setProperty:设置对象属性值 getPropertyDiscriptor:获取属性描述器 isReadable:检查属性是否可访问 copyProperties...:复制属性值,从一个对象到另一个对象 getPropertyDiscriptors:获取所有属性描述器 isWriteable:检查属性是否可写 getPropertyType:获取对象属性类型 十五...:设置对象属性值 populate:根据Map给属性复制 copyPeoperty:复制单个值,从一个对象到另一个对象 cloneBean:克隆bean实例 现在你只要了解了以上16种最流行的工具类方法
在Kotlin中,有一些观念是和Java存在较大区别的,一些基本观念需要注意的: 操作对象:在Kotlin中,所有变量的成员方法和属性都是对象,若无返回值则返回Unit对象,大多数情况下Uint可以省略...可空转换操作符:as? * 作用:null不能转换为String,因该类型不是可空的,此时使用可空转换操作符as?...// 抛出KotlinNullPointerException // 情况3:数据类型不能为null // 在 Kotlin 中,类型系统区分一个引用可以容纳 null (可空引用) 和 不能容纳(非空引用...) // 如:String类型变量不能容纳null // 若要允许为空,可声明一个变量为可空字符串:在字符串类型后面加一个问号?...d // 假设a不为null,才继续往下调用,以此类推 // 若该链式调用中任何一个属性为null,整个表达式都会返回null。 // 若只对非空值执行某个操作,可与let一起使用 a?.b?.
Kotlin系统类型分为可空类型和不可空类型。Kotlin中引入了可空类型,把有可能为null的值单独用可空类型来表示。这样就在可空引用与不可空引用之间划分出来一条明确的显式的“界线”。...Kotlin类型层次结构 通过这样显式地使用可空类型,并在编译期作类型检查,大大降低了出现空指针异常的概率。 对于Kotlin的数字类型而言,不可空类型与Java中的原始的数字类型对应。...length 3 只有在 nullableStr != null 时才会去调用其length属性。 3.3.3 非空断言 !!...如果是一个可空的Unit?,它的父类型是Any?。 ? Unit类型结构 3.4.2 Nothing与Nothing?类型 在Java中,void不能是变量的类型。也不能被当做值打印输出。...严格来说,父类是不能转换为子类的,子类包含了父类所有的方法和属性,而父类则未必具有和子类同样成员范围,所以这种转换是不被允许的,即便是两个具有父子关系的空类型,也是如此。
//检查是否是文件上传请求,如果是的话,就返回封装后的MultipartHttpServletRequest processedRequest = checkMultipart(request)...(request); } } 清除Request相关属性,主要是因为Request对象会被复用,因此使用前,需要清空上一次的数据,这也算是对象复用增加的代码复杂性吧。...方法,但只是对Request对象复用进行了相关数据清除工作,核心还是在AbstractHandlerMethodMapping提供的getHandlerInternal实现中。...); if (headers == null) { return null; } //Consume条件检查 ConsumesRequestCondition consumes =...请求匹配条件对象 RequestCondition<?
用联合类型构建可空性 由于在启用严格的 null 检查时,类型在默认情况下是不可空的,所以我们需要显式指定可为空,并告诉类型检查器我们希望哪些变量为空。...,类型中哪些成员是可空的变得很明显,并且可以自文档化。...Object 可能为空 return s.length; } 在访问属性之前,需要使用类型保护来检查给定对象上的属性访问是否安全: function getLength(s: string...: () => void) { // Error: 不能调用可能是 “undefined” 的对象 callback(); } 与在访问属性之前检查对象类似,我们首先需要检查函数是否具有非空值...它们允许对哪些变量和属性可以为空进行精确构建。只有在类型保护将属性访问或函数调用确定为安全之后,才允许进行属性访问或函数调用,从而避免了许多编译时的可空性错误。
return self.apply(context, args.concat(...arguments)) } } Object.assign实现 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象...new 关键字会进行如下的操作: 创建一个空的简单JavaScript对象(即{}); 链接该对象(即设置该对象的构造函数)到另一个对象 ; 将步骤1新创建的对象作为this的上下文 ; 如果该函数没有返回对象...缺点:父类原型的属性无法共享,父类的方法没有被共享。...在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。...} // 把临时变量赋值给不满足条件的后一位 arr[j + 1] = temp } } } 希尔排序 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序
在方法的实现中, 首先调用了父类的group方法来设置父EventLoopGroup。 然后,检查传入的子EventLoopGroup是否为空,如果为空则抛出NullPointerException。...在方法的实现中, 首先检查传入的channelClass是否为空,如果为空则抛出NullPointerException。...它接受一个Class对象作为参数,该Class对象表示要实例化的Channel类。在构造函数内部, 首先检查传入的Class对象是否为空,如果为空则抛出NullPointerException。...,该选项在创建Channel实例后使用。...在方法的实现中, 首先检查传入的option是否为空,如果为空则抛出NullPointerException。
本文节选自《设计模式就该这样学》 1 空对象模式的定义 空对象模式(Null Object Pattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。...其具体定义为设计一个空对象取代NULL对象实例的检查。NULL对象不是检查控制,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为,属于行为型设计模式。...3 空对象模式的UML类图 空对象模式的UML类图如下图所示。 由上图可以看到,空对象模式主要包含3个角色。 (1)抽象对象(AbstractObject):定义所有子类公有的行为和属性。...(3)空对象(NullObject):继承AbstractObject类,对父类方法和属性不做实现和赋值。 4 空对象模式的通用写法 以下是空对象模式的通用写法。...(4)它通过定义isNull()对使用条件语句==null的替换,显得更加优雅,更加易懂。 6 空对象模式的缺点 每一个要返回的真实的实体都要建立一个对应的空对象模型,那样会增加类的数量。
本文节选自《设计模式就该这样学》 1 空对象模式的定义 空对象模式(Null Object Pattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。...其具体定义为设计一个空对象取代NULL对象实例的检查。NULL对象不是检查控制,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为,属于行为型设计模式。...3 空对象模式的UML类图 空对象模式的UML类图如下图所示。 [file] 由上图可以看到,空对象模式主要包含3个角色。...(3)空对象(NullObject):继承AbstractObject类,对父类方法和属性不做实现和赋值。 4 空对象模式的通用写法 以下是空对象模式的通用写法。...(4)它通过定义isNull()对使用条件语句==null的替换,显得更加优雅,更加易懂。 6 空对象模式的缺点 每一个要返回的真实的实体都要建立一个对应的空对象模型,那样会增加类的数量。
领取专属 10元无门槛券
手把手带您无忧上云