为了账号安全,请及时绑定邮箱和手机立即绑定

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. 其他静等各位使用后总结了。



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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消