Kotlin异常与Java异常的区别:

throw的Kotlin中是个表达式,这样我们可以将throw作为Elvis表达式【val test = aa ?: bb,这样的则为Elvis表达式,表示如果?前面的不为null则将前面的aa赋值给test,否则则执行?后面的赋值test】的一部分,下面看下代码:

呃,有个东东比较奇怪:

这里要解释一下:throw表达式的类型是一种特殊的类型:Nothing。在自己的代码中,可以使用Nothing来标记永远不会返回的函数。好下面来把程序执行一下:

比如好理解,接下来咱们将str的值置为null再看下:

好,还是将str的值还原,继续修改程序:

而如果咱们将置为null,则结果也可想而知,肯定抛异常了:

下面来瞅一下Nothing的定义:

关于Nothing,它还可以这样用“Nothing?”,由于Nothing是代表一个永远都不会返回值,而?表示它可以为null,所以很明显"Nothing?"可以说明是null的一种类型,下面可以验证一下:

那,下面再来看:

此时它又是啥类型呢?其实是:

注解(annotation):

在Kotlin中也是存有注解的,那下面看一下如何来创建一个注解:

而我们可以利用meta-annotation(元注解)来给注解增加额外的元数据,下面看几个重要的元注解:

1、@Target:其实跟Java注解类似,用来标识该注解是要写在哪个地方。

2、@Retention: 保持策略,也就是该注解是在代码中出现,还是运行时上面,还是说在字节码上面:

接下来咱们来使用一下咱们定义的注解:

我们知道在Kotlin中有primary constructor和secondary constructor,其中在主构造函数时我们定义时可以这样:

其实主构造方法是可以有此关键字的:

而如果想给我们的主构造方法加上注解,此关键字就不能省了,如下:

如果省掉则会报错:

其中也可以给属性的getter和setter增加注解,如下:

Kotlin异常与Java异常的区别及注解详解的更多相关文章

  1. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...

  2. “全栈2019”Java异常第二十二章:try-with-resources语句详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  3. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  4. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

  5. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  6. JAVA通过JDBC连接Oracle数据库详解【转载】

    JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...

  7. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解     目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六. ...

  8. Java线程创建形式 Thread构造详解 多线程中篇(五)

    Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...

  9. (7)Java数据结构--集合map,set,list详解

    MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...

随机推荐

  1. 贴子详情接口偶发时延超过2s的问题

    1. 发现问题     1. 查询慢access日志,发现偶尔有接口时延超过2s,发送概率1%左右 2. 排查     1. 写单元测试,多次测试后,不能重现问题     2. 接口代码里加日志,每隔 ...

  2. Apache显示目录列表及icons目录的问题

    今天想部署下开源项目pig,发现它的mysql需要5.7.8 +,为了能支持多个版本并且可以方便切换,所以选择了phpstudy_pro 刚开始Apache不支持目录访问 修改配置 <Virtu ...

  3. spark + hive

    1.如何让 spark-sql 能够访问hive? 只需将hive-site.xml 放到 spark/conf 下即可,hive-site.xml 内容请参照hive集群搭建 2.要在spark 代 ...

  4. linux_permission

    linux命令与权限(permission denied):权限问题 a  上调权限 chmod 777 test.php b  更改为root su root 提示输入root密码 c  root权 ...

  5. 湖南省第6届程序大赛第6题 Biggest Number

    Problem F Biggest Number You have a maze with obstacles and non-zero digits in it: You can start fro ...

  6. linux减少服务器带宽的方法

    linux减少服务器带宽的方法用百度静态资源公共库http://cdn.code.baidu.com/ 不仅可以不使用服务器流量 而且还有cdn加速比方说http://apps.bdimg.com/l ...

  7. JavaEE 期末总结

    struts2部分 一.struts2框架的集成: 1.web.xml配置struts2过滤器:前端控制器.核心控制器 如果有多个过滤器,需要将该过滤器放置到最后一个 2.struts.xml配置:主 ...

  8. perl修改镜像源地址

    perl修改源地址 这里推荐中科大的源 http://mirrors.ustc.edu.cn/CPAN/ perl -MCPAN -e shell 1.执行cpan命令确认存在该命令 如果cpan执行 ...

  9. td宽度自适应 窄的地方自动收缩

    .layui-table td,.layui-table th { white-space: nowrap; width: auto; min-width: 0px!important; } 不换行! ...

  10. PTA A1017

    A1017 Queueing at Bank (25 分) 题目内容 Suppose a bank has K windows open for service. There is a yellow ...