首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kotlin 学习笔记(二)

    在上篇笔记中,我们对 Kotlin 的基本类型、关键字、类与对象,以及与 Java 之间互调的内容有了一些认识,这篇笔记来看看 Kotlin 中几种特殊的类,以及集合相关的常用操作。 1....这两个 component 是 data class 自动生成的,如果普通的 class 也想这样解构,也可以,需要使用 operator 关键字,对类中的属性做一个关联: // code 4 class...Kotlin 枚举类(密闭类) Kotlin 中也有枚举类,使用方法与 Java 的枚举类一样,此外,Kotlin 还有一个更加强大的枚举类,称为密闭类,用 sealed 关键字修饰。...密闭类可以有自己的子类,而且可以扩展它的子类,例如给子类设置一些参数等,要知道,枚举类是不具有这种特点的: // code 6 // Kotlin 密闭类(高级枚举类) sealed class Language...array 可修改元素值,修改后为 [99,2,3,4,5] 与 code 9 中的 List 不一样的是,Array 的这种初始化后的 array 对象,是可以对数组中的元素做修改的,但是其他的

    63410

    Kotlin京东业务实战 | 强大又简洁的JVM语言

    安全:Java最大的一个问题就是null。如果没有对变量或是参数进行null判断,那么程序当中就有可能抛出大量的NullPointerException,然而在编码时这些又是难以检测到的。...Kotlin使用了显式的null,这会强制我们在必要时进行null检查。 互操作:Kotlin可与Java语言无缝通信。...相同,注意需要将compile修改为provided,防止类库重复引用。...解决方法:在主站代码中配置属性方法混淆,保证kotlin类中属性方法全部不做混淆优化; 为了保证插件包大小,并且与主站代码不重复,引用类库时使用provided; 解决方法:使用provided引入类库...,在编译时使用,最终不会被编译到apk;后期将配置环境放到aura中更方便。

    1.7K00

    Java 之 Lombok 必知必会

    , PACKAGE, PRIVATE 2.3 @NonNull 顾名思义,@NonNull 用于标记类中不能允许为 null 的字段或者参数上,任何使用该字段的地方都生成空指针判断代码,若@NonNull...使用属性 @ToString.Exclude排除不需要在 toString 中出现的字段,使用 @ToString.Include标记需要出现在 toString 中的字段,具体用法可参见示例: @Getter...(1).name("父类名称").childName("子类名称").build(); System.out.println(child.getId()); 由于 Lombok Plugin 还未更新支持...throws 关键字的情况下,隐蔽地抛出受检查异常,为我们平常开发中需要异常抛出时省去的 throw 操作,下面为使用 @SneakyThrows 的示例代码: public class SneakyThrowsExample...而 val 与 var 的区别在于, val 用于修饰不可变变量,var 修饰可变变量。当 val 修饰的变量被重新赋值时,编译器就会提示异常:Error: java: 无法为最终变量 X 分配值。

    89840

    揭秘kotlin协程中的CoroutineContext

    前言 -- 从kotlin1.1开始,协程就被添加到kotlin中作为实验性功能,直到kotlin1.3,协程在kotlin中的api已经基本稳定下来了,现在kotlin已经发布到了1.4,为协程添加了更多的功能并进一步完善了它...,不同的是DefaultScheduler内部依赖的是kotlin自己实现的线程池逻辑,而CommonPool内部依赖的是java类库中的Executor,默认情况下useCoroutinesScheduler...Work Stealing)重新实现了一套线程池的任务调度逻辑,它的性能、扩展性对协程的任务调度更友好,具体的逻辑可以查看这个类的dispatch方法: internal class CoroutineScheduler...,后续异常都放在了第一个抛出异常的suppressed数组中。...puls方法最终返回的CoroutineContext是不存在key相同的element的,+号右边的CoroutineContext中的元素会覆盖+号左边的CoroutineContext中的含有相同

    1.9K31

    【8】进大厂必须掌握的面试题-Java面试-异常和线程

    什么是Java中的异常层次结构? 层次结构如下: Throwable是所有Exception类的父类。...Java异常类的重要方法有哪些? 异常及其所有子类均未提供任何特定方法,并且所有方法均在基类Throwable中定义。...String getLocalizedMessage()–提供此方法,以便子类可以重写它以向调用程序提供特定于语言环境的消息。此方法的可抛出类实现仅使用getMessage()方法即可返回异常消息。...String toString() –此方法以String格式返回有关Throwable的信息,返回的String包含Throwable类的名称和本地化消息。...返回的字符串包含Throwable类的名称和本地化消息。 void printStackTrace() –此方法将堆栈跟踪信息打印到标准错误流。 Q14。

    67710

    Kotlin学习笔记

    中可以不必向上抛出异常(java中必须抛出,不然编译不过) fun readNumber(reader: BufferedReader): Int?...) joinToString(list) joinToString(list, prefix = "# ") 1.7 顶级函数和属性(静态的) 在 Java 中我们需要把函数和属性放在一个类中,在 Kotlin...因为 JVM 虚拟机只能执行类中的代码,所以 Kotlin 会生成一个名叫 JoinKt 的类,并且顶级函数是静态的,所以可以在 Java 中这样调用顶级函数: JoinKt.joinToString(...可访问级别‘’ 有区别:只有子类可访问 1.12 声明类的几种方式 class className : 这个类是 public final 的 class Person 编译后: public final...内部类 在 Kotlin 中内部类默认是静态的( Java 与此相反),不持有外部类的引用: class OuterClass { //在 Kotlin 中内部类默认是静态的,不持有外部类的引用

    1.9K30

    Java从入门到精通十(java异常)

    这适用于在异常链(异常嵌套)机制被加入到 Throwable 之前存在“遗留 Throwable 链机制”的情况。...5:ClassCastException(类转换异常) 这个问题会经常遇到,对象的转换的时候经常会出现这个问题 当试图将对象强制转换为不是实例的子类时,抛出该异常。...数据结构上的栈,如果你的栈是空的,那么在java中,如果你取出元素的话,比如一个peek(),它不会给你输出null,会给你抛出栈空异常 该异常由 Stack 类中的方法抛出,以表明堆栈为空 8:...SyncResolver 对象中的所有其他值将为 null。 SyncResolver 对象可用于检查并解析一个行中的每个冲突,然后转到下一个有冲突的行,重复该过程。...(ex.age); System.out.println(ex01.name); } } 但是运行时会出现问题。

    1.4K40

    Kotlin 中的 Lambda 与 Inline

    在Kotlin中,有很多很酷很实用的特性,比如Lambda和高阶函数,利用这些特性,我们可以更加快速的实现开发,提升效率。...System.out.println("testNormalSafeRun") } } 由于Kotlin默认是面向JDK 6,而Java 8 才引入Lambda表达式支持,Kotlin...Lambda 表达式 翻译成的Function0 的实例被创建了近101多次,生成101个Fuction0 实例 由于Lambda 表达式捕获了外部的变量,生成的Fuction0类 接受变量作为参数 上述代码存在的性能问题...inline 好在Kotlin提供了,处理上面问题的方法,这就是所谓的inline 关键字。...通过这种形式,避免了最一开始的类实例生成的问题了。 When Lambada meets return 自从了解了 Lambda 可以被inline后,我们貌似可以自由自在地使用它。

    1.9K20

    RxHttp ,比Retrofit 更优雅的协程体验

    没关系,直接看代码 @Parser(name = "Response") open class ResponseParser : TypeParser { //以下两个构造方法是必须的...= 200或data == null时,就抛出ParseException异常,并带上了msg、code字段,所以我们在异常回调通过强转,就可以拿到这两个字段 接着回答第二个问题,异常回调里的it是什么对象...,截取范围越界,则抛出越界异常;take用于从0开始,取n个数据,不足n个时,返回全部,如下: val students = RxHttp.postForm("/service/...") .toList...,这是典型的串行场景 看看通过协程如何解决这个问题,如下: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState...)中的任一版本(v4.3.0除外,该版本有一个bug,导致无法适配),因此,使用RxHttp,完全不用担心okhttp版本冲突问题。

    2.2K20

    From Java To Kotlin 2:Kotlin 类型系统与泛型终于懂了

    # Kotlin 的类型系统 ## 类、类型和子类型 - 类(class)是指一种数据类型,类定义定义对象的属性和方法,可以用来创建对象实例,例如 `class Person(val name: String...; 可空类型的strNullable:String? 不可以赋值给 非可空类型的 strNotNull:String。 可以看出每一个Kotlin**类**都可以用于构造至少两种**类型**。...所以表达式思维中的问题就可以解答了 ``` // 函数返回值类型是Int,实际上却抛出了异常,没有返回Int // ↓ ↓ fun calculate...类型 println(name.length) // 可能抛出空指针异常 person.name = null // 允许赋值为 null } ``` 在这个例子中, name 是平台类型...length) // 非空断言,如果 name 为 null 则抛出异常 ``` 平台类型是指 Kotlin 和 Java 的互操作性问题, 在混合项目中要多加注意。

    47050

    Java CompletableFuture 异步超时实现探索

    简介JDK 8 中 CompletableFuture 没有超时中断任务的能力。现有做法强依赖任务自身的超时实现。本文提出一种异步超时实现方案,解决上述问题。...在我们的日常优化中,最常用手段便是多线程并行执行。这时候就会涉及到 CompletableFuture 的使用。常见使用方式下面举例一个常见场景。...那么就存在一个问题,中间件超时控制能力有限,如果异步任务是中间件 IO 操作 + 本地计算操作怎么办?...而获取结果(反序列化)作为纯本地计算操作,耗时长短受 CPU 影响较大。某些 CPU 使用率高的情况下,就会出现异步任务没能触发抛出异常中断,导致我们无法准确控制超时时间。...解决方式JDK 9这类问题非常常见,如大促场景,服务器 CPU 瞬间升高就会出现以上问题。那么如何解决呢?其实 JDK 的开发大佬们早有研究。

    12210

    SpringAOP

    核心概念 连接点(JoinPoint):程序执行过程中的任意位置,粒度为执行方法、抛出异常、设置变量等 在SpringAOP中,理解为方法的执行 切入点(Pointcut):匹配连接点的式子 在SpringAOP...开头的方法、所有以Dao结尾的接口中的任意方法、所有带有一个参数的方法等 通知(Advice):在切入点处执行的操作,也就是共性功能 在SpringAOP中,功能最终以方法的形式呈现 通知类:定义通知的类...匹配com包下的任意包中的UserService类或接口中所有名称为findByld的方法 + :专用于匹配子类类型 execution(* *.....void,也可以设置成Object 由于无法预知原始方法运行后是否会抛出异常,因此环绕通知方法必须抛出Throwable对象 环绕通知中可以对原始方法调用过程中出现的异常进行处理 返回后通知(了解) 名称...获取原始参数 获取切入点方法的参数 JoinPoint:适用于前置、后置、返回后、抛出异常后通知 Proceed]ointPoint:适用于环绕通知 示例: @Pointcut("execution(*

    18210

    Kotlin 1.2 的新增特性

    弃用:枚举项中的嵌套类型 在枚举项中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。在 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。...弃用:扩展 Throwable 的泛型类的内部类 继承自 Throwable 的泛型的内部类可能会违反 throw-catch 场景中的类型安全性,因此已被弃用,在 Kotlin 1.2 中会被警告,在...Regex 类现在是可序列化的 kotlin.text.Regex 类已成为可序列化的类,现在可以在可序列化的层次结构中使用。...如果满足条件,Closeable.use 可以调用 Throwable.addSuppressed 在一些其他异常处理后,关闭资源期间抛出异常时,Closeable.use 函数可调用 Throwable.addSuppressed...这可以改变类加载和初始化的顺序 preserve-class-initialization —— 为构造函数调用生成类 Java 字节码,以确保保持类初始化顺序。

    2.8K70
    领券