亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

coding with kotlin

標簽:
Kotlin

kotlin 简介

JetBranis 于 2016.2.15 发布 kotlin v1.0 版本, 现在官网的最新版本是 v1.2.60。 官网解释为:

Statically typed programming language
for modern multiplatform applications

100% interoperable with Java™ and Android™

和 java 一样,都是跨平台的静态语言。并且百分百兼容 java 和 android 平台。据说 kotlin 曾连续几个月在 TIOBE 上排 49,由此可见其稳定性(>.<)。


webp

tiobe-2018-08

关于 kotlin 的具体介绍,网上已经很多了, 在此不再赘述。

kotlin 基本语法

  • kotlin doc 官网上已经描述的很详细了。 如果有一定的 java 基础, 可以很轻松上手。

  • kotlin with spring boot

  1. create your maven project with spring boot .

  2. add kotlin dependencies( version: 1.2.51) to your pom.xml

     <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
          <artifactId>kotlin-stdlib-jdk8</artifactId>
      </dependency>
      <dependency>
          <groupId>org.jetbrains.kotlin</groupId>
          <artifactId>kotlin-reflect</artifactId>
      </dependency>
  3. add kotlin plugin

        <plugin>
             <artifactId>kotlin-maven-plugin</artifactId>
             <groupId>org.jetbrains.kotlin</groupId>
             <configuration>
                 <args>
                     <arg>-Xjsr305=strict</arg>
                 </args>
                 <compilerPlugins>
                     <plugin>spring</plugin>
                 </compilerPlugins>
             </configuration>
             <dependencies>
                 <dependency>
                     <groupId>org.jetbrains.kotlin</groupId>
                     <artifactId>kotlin-maven-allopen</artifactId>
                     <version>${kotlin.version}</version>
                 </dependency>
             </dependencies>
         </plugin>
  4. create Main method

    @SpringBootApplicationclass OwWebApplicationfun main(args: Array<String>) {
        SpringApplication.run(OwWebApplication::class.java, *args)}
  5. create your own controller with annotations just like using java with spring

      @RestController
      @RequestMapping("/api")  @Api("health check")  class HealthCheck {      @GetMapping("/ping")      fun healthCheck(): String {          return "PONG"
          }
        }
  6. now you can start your service

  7. 具体参见 ordinary-world
    温馨提示: 注意切换分支。目前主要在 develop 分支

个人体验

  1. 对 NPE 友好。
    kotlin type check: kotlin 的 基类为 Any(java 中 的 Object)。 kotlin 的类型检查器在编译期间对所有基于 Any 的子类作检查时, 如果有 NPE, 则会报错。
    那么, 如果需要接收空类型时该如何呢?别急, kotlin 里还有这个: Any? 。我看到的一些资料里认为 Any? 是 Any 的父类, 也就是说 Any? 才是 kotlin 里的爸爸。 但我觉得这种类型是 Any 的一个映射, 通过 kotlin 的 type checker 做 NPE check。 查看 kotlin 的源码也可以看到, 只有 Any 类, 并未有什么 Any? 。同时, 该类中的注释也说的很清楚:

    The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.

  2. 强大的语法糖。
    相对于 java 在 8 之后支持的 lambda(已经很好用了),用完 kotlin 后,表示十分酸爽。当然, 由于见识的问题, 并没有怎么用过专业的函数式编程语言(Lisp,erlang, scala,haskell 之流),所以 kotlin 的函数式编程对我而言已经很好了。

  3. 支持类扩展

      fun main(args: Array<String>) {
            println(">,<".extension())
      }
      fun String.extension(): String {      return "$this-class-extension"
      }

    用过都说好

  4. 数据类型
    kotlin 提供 data class 作数据类, 告别 getter/setter/equals/hashCode 等。当然, java 可以通过 Lombok 来搞定这些。

  5. 其他静等各位使用后总结了。


  6. 实际使用中遇到过一次。  参见 kotlin using jackson annotation



作者:yuhp
链接:https://www.jianshu.com/p/ea83a0ea8f63


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消