作者:Antonio Leiva 时间:Apr 4, 2017 原文链接:https://antonioleiva.com/nullity-kotlin/ 关于Kotlin最重要的部分之一:无效处理,我花了很长时间完成写一篇文章. 东尼·霍尔(Tony Hoare)“空(null)”概念的创作者,自称“十亿美元的错误”.在你编写Java代码是,null是最容易出错的指针. 如果你在观察Bug管理器,我确信你见到的NullPointerException错误要超过90%. 多亏Kotlin,你将工…
对于 Null 的检查是 Kotlin 的特点之一.强制你在编码过程中考虑变量是否可为 null,因此可以避免很多在 Java 中隐藏的 NullPointerException. 但是,当你用插件直接将 Java 代码转换为 Kotlin 时,你会发现有很多 !! 在里面.但其实 !! 意味着「有一个潜在未处理的 KotlinNullPointerException 在这里」. 这里就介绍 6 个避免 !! 的方法: 1. 用 val 而不是 var 在 Kotlin 中 val 代表只读,v…
1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String userName; private int age; private int cutScore; public String getUserName() { return userName;} public void setUserName(String userName) { this.userN…
var a: String =null // 编译错误 var a: String? =null // 编译通过 要允许null值, 需要将变量声明为可为null的字符串类型:String? fun main(arg: Array<String>) { var a: String? =null print(a?.length) } 上面代码是安全调用,如果为null则返回为null Elcis操作符 fun main(arg: Array<String>) { val b: Str…
CREATE TABLE `test` ( `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL) ENGINE = MYISAM ; 错误(不可以插入null值):INSERT INTO `test` VALUES (null,1);正确(插入''没问题):INS…
作者:Antonio Leiva 时间:Dec 27, 2016 原文链接:https://antonioleiva.com/custom-views-android-kotlin/ 在我们阅读有关class文章时,你可能记得通常情况下仅用一个构造函数.这对于要创建定制视图就是一个问题. Android框架希望有多个构造函数对应不同的创建视图位置和创建视图方法(通过代码.使用XML,设置主题,等等),这样我们就不能忽略这种情况. 为此,Kotlin团队提供了同一个类中有多个构造函数的能力,就如同…
作者:Antonio Leiva 时间:Mar 14, 2017 原文链接:https://antonioleiva.com/recyclerview-adapter-kotlin/ 通过创建RecyclerView适配器,Kotlin可以简化您的生活,这是一个有趣的方法. 在这个方法中,您可以看到更易阅读的代码组织,且避免冗余代码. Kotlin的RecyclerView适配器 我们创建一个适配器时,要设置标题和将图形插入进各单元内. 我们不允许项目的更改,这就是个非常简单的适配器.如果我们要…
上篇已提(tu)到(cao)Java中的各种坑.习惯了C#的各种特性和语法糖后,再转到Java感觉比较别扭.最后本着反正Java也不是很熟悉,干脆再折腾折腾其他语言的破罐子破摔的心态,逛了一圈JVM语言,最终决定转Kotlin. 为何选择Kotlin 项目遭遇人员变动,包括我在内就剩两个人开发,转型成本低,代码质量容易控制. JVM语言.号称与Java 100%兼容.实际使用的确能够与Java几乎无缝地相互调用,基本上可以无缝迁移,完美兼容Java生态. OOP.目前OOP仍是主流,方便后续交接…
!=会过滤值为null的数据 在测试数据时忽然发现,使用如下的SQL是无法查询到对应column为null的数据的: select * from test where name != 'Lewis'; 本意是想把表里name的值不为Lewis的所有数据都搜索出来,结果发现这样写无法把name的值为null的数据也包括进来. 上面的!=换成<>也是一样的结果,这可能是因为在数据库里null是一个特殊值,有自己的判断标准,如果想要把null的数据也一起搜索出来,需要额外加上条件,如下: selec…
Kotlin, Android的Swift 苹果已经用Swift代替Objective-C,一种古老的语言,来进行iOS的开发了.明显Android开发也有这个趋势. 虽然现在已经可以选择Scala或者Groovy等基于JVM的语言开发Android应用来尝尝鲜,但是弊端却显而易见. 要引入一个全新的开发语言,那么就意味着需要引入这个语言的全部的运行时.这简直就是噩梦.因为这会给 极大的增加应用包的大小,还不说65535方法问题.小的应用还可以,但是这不是一个合适的替代语言应该有的问题. Kot…