作家
登录

不要用Java的语法思维来写Kotlin

作者: 来源: 2018-03-12 11:57:41 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!


写了多年的Java,直到看到Kotlin,本来代码可以如斯优雅!

如不雅你是像我一样是一名优良的Java开辟者^_^,并且已经想用kotlin来实现你的法度榜样,那么,抱歉!不要用Java的语法思维来写Kotlin,不要让kotlin的优雅湮没。如不雅你没有Java开辟经验,下面的内容也对你会有赞助。。。

1.尽可能的罕用 !!

小我感到对于Null的检查是Koltin最语法糖的器械了,强迫在编码过程中推敲空指针,是以《十亿美元的缺点》,也许你不会再有这个机会犯错了(也许可以说成,你赚了十亿美金^_^)。

起首须要介绍是!!操作符。

!! 操作符:这是为空指针爱好者预备的,非空断言运算符(!!)将任何值转换为非空类型,若该值为空则抛出异常。我们可以写 a!! ,这会返回一个非空的 a 值 (例如:在我们例子中的 String)或者如不雅 a 为空,就会抛出一个 空指针 异常:

  1. val b = a!!.length 

所以,我们能不消!!操作符就不要用。。。

下面介绍几种方法避免应用!!操作符

1).多用 val 而不是 var

例:

在 Kotlin 中 val代表只读,var代表可变。建议尽可能多的应用val。val是线程安然的,并且必须在定义时初始化,所以不须要担心 null 的问题。只须要留意 val 在某些情况下也是可变的就行了。

val 和 var 是用于表示属性是否有 getter/setter:

  • var:同时有 getter 和 setter
  • val:只有 getter

所以,强烈推荐能用val的处所就用val。

2).应用 lateinit

依附倒转,对象的创建是经由过程spring完成的,而val请求定义的时刻初始化

查看Iterator.kt这个接口类,这个接口供给了hasNext()函数和next()函数。

  1. /** 
  2.  * Created by quanke on 2018/1/9. 
  3.  * Site:http://woquanke.com . 
  4.  */ 
  5. @RunWith(SpringRunner::class) 
  6. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
  7. class ApplicationTests { 
  8.     val log = LogFactory.getLog(ApplicationTests::class.java)!! 
  9.     @Autowired 
  10.     lateinit var restTemplate: TestRestTemplate 
  11.      
  12.     @Test 
  13.     fun `GET when given quanke then returns "Hello, quanke"`() { 
  14.         // Given 
  15.         val name = "quanke" 
  16.         // When 
  17.         val body = restTemplate.getForObject("/users/hello/{name}", String::class.java, name
  18.         // Then 
  19.         assertThat(body).isEqualTo("Hello, $name"
  20.     } 

留意:lateinit很好用,但也有坑

拜访未初始化的 lateinit 属性会导致 UninitializedPropertyAccessException。

lateinit 不支撑基本数据类型,比如 Int。对于基本数据类型,我们可以如许:

  1. > private var mNumber: Int by Delegates.notNull<Int>() 
  2.  1/8    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      热管还会打酱油?别让散热误区帮你倒忙

    沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 在很多行业中都有很多看起来竽暌剐事理,用起往来交往不是那回事的误区,在主机中更是有不少,受愚钱是一方面,硬件和>>>详细阅读


    本文标题:不要用Java的语法思维来写Kotlin

    地址:http://www.17bianji.com/lsqh/40601.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)