Kotlin异常与Java异常的区别及注解详解
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异常的区别及注解详解的更多相关文章
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...
- “全栈2019”Java异常第二十二章:try-with-resources语句详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java线程池的使用与详解
java线程池的使用与详解 [转载]本文转载自两篇博文: 1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html ...
- 牛客网 Java 工程师能力评估 20 题 - 详解
牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
- 【转】Java魔法堂:String.format详解
Java魔法堂:String.format详解 目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六. ...
- Java线程创建形式 Thread构造详解 多线程中篇(五)
Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...
- (7)Java数据结构--集合map,set,list详解
MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...
随机推荐
- Mysql日期函数说明
1.获取当天日期 current_date -> 2019-07-17 00:00:00 2.获取昨天日期函数 date_sub(current_date,INTERVAL 1 day) ...
- 【Spring Cloud学习之一】微服务架构
一.网站架构模式发展 单体应用-->SOA-->微服务 1.分布式项目与项目集群分布式项目:根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程 ...
- 【插件】【idea】的Mybatis Plugin插件方便mapper接口方法和mapper XML文件之间来回切换
效果 安装 这是2019.2版本的,旧版的有点不一样
- 《ucore lab1 exercise4》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 题目:分析bootloader加载ELF格式的OS的过程 通过阅读bootmain.c,了解bootloader如何加载ELF文件.通过分析源代 ...
- 解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
项目中遇到的问题 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; public cl ...
- [转帖]70亿!以色列间谍产品公司NSO要被卖掉了
70亿!以色列间谍产品公司NSO要被卖掉了 2017-06-14 11:11 https://www.sohu.com/a/148739327_257305 E安全6月14日讯以色列的网络能力处于世界 ...
- Huber Loss 介绍
Huber Loss 是一个用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性. 当预测偏差小于 δ 时,它采用平方误差,当预测 ...
- WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围
原文:WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围 WPF 的 VisualBrush 可以帮助我们在一个控件中显示另一个控件的外观.这是非常妙的功能. 但是本文需要说其中 ...
- .NET-异步操作
感觉可以用于log日志的东西,这个东西他还是会走的但是不会影响你下一步的操作,你下一步还是正常怎么操作就怎么操作! 这样可以给用户免掉一些没必要的等待. static void Main(string ...
- 关于使用jquery form submit出现多次提交的问题
错误的写法: $(this).submit(function () { $(this).ajaxSubmit({ url: opts.url, type: 'post', dataType: 'jso ...