首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发必备知识:为什么说Kotlin值得一试

1、Hello, Kotlin 1.1 Kotlin的身世 写了许久 Java,有没有发现其实你写了太多冗余的代码? 后来你体验了一下 Python,有没有觉得不写分号的感觉真是超级爽?...哈哈,实际上你完全可以不用这么痛苦,用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言的特性,说到这里你是不是开始心动了呢...Kotlin 正是充分利用了这一点,它自己的标准库只是基于 Java 的语言框架做了许多扩展,你在Kotlin 当中使用的集合框架仍然跟你在Java当中一样。...为了让大家印象深刻,我下面给出类似功能的 Java 的代码实现: ? 而你如果说希望在 Java 中也希望像下面这样拿到这个泛型参数的类型,是不可以的: ?...下面我们再来提一个有意思的东西,我们从做 Android 开发一开始就要编写 xml,印象中这个对于我来说真的是一件痛苦的事情,因为它的工作机制并不如代码那样直接(以至于我现在很多时候居然喜欢用 Java

1.2K90

hello Kotlin

1.1 Kotlin的身世 写了许久 Java,有没有发现其实你写了太多冗余的代码? 后来你体验了一下 Python,有没有觉得不写分号的感觉真是超级爽?...哈哈,实际上你完全可以不用这么痛苦,用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言的特性,说到这里你是不是开始心动了呢...Kotlin 正是充分利用了这一点,它自己的标准库只是基于 Java 的语言框架做了许多扩展,你在Kotlin 当中使用的集合框架仍然跟你在Java当中一样。...为了让大家印象深刻,我下面给出类似功能的 Java 的代码实现: ? 而你如果说希望在 Java 中也希望像下面这样拿到这个泛型参数的类型,是不可以的: ?...Kotlin 有办法可以解决这个问题,那就是 DSL 了。下面给出一个例子: ? 一个 LinearLayou t包含了一个 Button,这段代码你可以直接写到你的代码中灵活复用,就像这样: ?

93050
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SpringBoot AOP 记录日志实例

    但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。...但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?...AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。...重温 AspectJ 中几个必须要了解的概念: Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。...Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码

    1.8K11

    你为什么需要 Kotlin

    这些 crash 里面绝大多数都是空指针异常,这倒不是说空指针本身有什么问题,空指针只能说明程序有考虑不周的情形出现,出现空指针调用通常都是代码的编写问题,那么为什么 Java 会允许潜在的空指针存在呢...你在 Java 当中除了对自己说『我保证 findPersonFromCacheOrCreate() 不会返回空』,还有什么更让人踏实的办法么?当然没有。 『看看 Kotlin 有没有好办法吧!』...『从今天起,大家如果有需要 SP 先生持久化数据的需求,只需要在我这里登记一次,剩下的,大家只需要像读写变量一样操作即可生效。』...『如果代码可以聪明到自己写代码,那我们不就要失业了吗?』不知道你说这话是在调侃,还是感到有些恐慌。 ? Kotlin 之前是无法使用这把利刃的,这可能真的打击了不少人的积极性。...Java 和 Kotlin 的对话 『Java 叔叔,我。。我怕。。。』Kotlin 怯懦的说。 『有叔叔在呢。』Java 拍着胸脯,安慰道。『世界是你们的,也是我们的,但是归根结底是你们的。

    1.1K40

    如何为 Gradle 的 KTS 脚本添加扩展?

    而且需要特别注意的是,我们会在 classpath 阶段的 buildscript 代码块中添加 classpath,所以这个阶段与 body 阶段运行时的 classpath 是不一样的,因此不是所有在...定义一个像 mavenCentral 一样的函数 我们定义一个类似于 mavenCentral 的函数 tencentCloud 来方便我们添加腾讯云的 maven 仓库镜像,并以此来说明扩展的定义有哪些注意事项...这样看来,在 build.gradle.kts 当中任意代码运行之前,buildSrc 的代码就已经在 classpath 当中了,因此把我们的扩展添加到 buildSrc 当中,就能解决整个工程的脚本访问的问题...2.3 定义在 init.gradle.kts 当中 接下来我们就要考虑,有没有什么办法让我的电脑上所有的工程都能支持这个扩展呢?...maven 的仓库当中,然后通过常规的 classpath 的方式引入,我们非常清楚这段代码一定会比我们在工程当中的 buildscript 先运行,但 classpath 调用之后实际上是添加到了

    1.4K20

    如何为 Gradle 的 KTS 脚本添加扩展?

    而且需要特别注意的是,我们会在 classpath 阶段的 buildscript 代码块中添加 classpath,所以这个阶段与 body 阶段运行时的 classpath 是不一样的,因此不是所有在...定义一个像 mavenCentral 一样的函数 我们定义一个类似于 mavenCentral 的函数 tencentCloud 来方便我们添加腾讯云的 maven 仓库镜像,并以此来说明扩展的定义有哪些注意事项...这样看来,在 build.gradle.kts 当中任意代码运行之前,buildSrc 的代码就已经在 classpath 当中了,因此把我们的扩展添加到 buildSrc 当中,就能解决整个工程的脚本访问的问题...2.3 定义在 init.gradle.kts 当中 接下来我们就要考虑,有没有什么办法让我的电脑上所有的工程都能支持这个扩展呢?...maven 的仓库当中,然后通过常规的 classpath 的方式引入,我们非常清楚这段代码一定会比我们在工程当中的 buildscript 先运行,但 classpath 调用之后实际上是添加到了

    2.2K30

    你应该切换到Kotlin开发

    Aandroid开发你还在用Java吗?现在是开始使用新的编程语言的时候了。自从Kotlin成为谷歌官方语言后,你有没有心动? ?...二、熟悉的语法 Kotlin不是学术界(编程界)奇怪的(令人难以捉摸的语言).来自于OOP(面向对象编程语言)界的程序员都很熟悉.并且或多或少的都可以去理解.当然与Java还是有一定的区别的.比如说构造函数...(), equals(), hashCode(), and copy(),并且不会像Java一样超过100行代码 data class Person(val name: String,...") 十六、空值安全 Java是一种应该称之为几乎静态类型的语言,在Java中,String类型的变量不能保证引用String(安全) - 它可能引用为null,即使我们已经习惯了这个类型,它抵消了静态类型检查的安全性...举一个小的例子,当我第一次尝试从StackOverflow中复制粘贴一些Java代码时,这个东西就弹出来了.

    48200

    Spring5参考指南:SpringAOP简介

    我们可能需要在每个对象里面都添加一些统计时间的代码,那么有没有更好的方法来处理这个问题呢? 面向方面编程(AOP)通过提供对程序结构的另一种思考方式来补充面向对象编程(OOP)。...事务管理是企业Java应用程序中横切关注点的一个很好的例子。在SpringAOP中,方面是通过使用常规类(基于模式的方法)或使用@Aspect注解(@Aspectj样式)注解的常规类来实现的。...(introduction在AspectJ社区中称为类型间声明。) 目标对象(Target object):由一个或多个方面advised的对象。也称为“advised 对象”。...这可以在编译时(例如,使用AspectJ编译器)、加载时或运行时完成。Spring AOP和其他纯Java AOP框架一样,在运行时进行编织。...Spring AOP通知类型 Spring AOP包含以下几种通知类型: Before advice:在连接点之前运行但不能阻止执行到连接点的通知(除非它抛出异常)。

    34130

    Kotlin概述与Java的比较

    基本上像Java一样,C和C ++ – Kotlin也是“静态类型编程语言”。静态类型的编程语言是在使用变量之前不需要定义的那些语言。这意味着静态类型与变量的使用明确声明或初始化有关。...考虑以下示例 – 除了面向对象编程的类和方法之外,Kotlin还支持使用函数进行程序化编程。 像Java,C和C ++一样,Kotlin程序的入口点是一个名为“main”的函数。...Kotlin语言的好处 Kotlin编译为JVM字节码或JavaScript – 像Java一样,Bytecode也是Kotlin程序的编译格式。...将Java自动转换为Kotlin – JetBrains将IntelliJ集成了一个新功能,将Java转换为Kotlin,节省了大量的时间。而且它也节省了我们重新编写世代代码。...以下为MutableList 添加交换函数 – 扩展功能中的“this”关键字对应于接收者对象,即在点之前传递的对象。

    3K10

    Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16】—— Spring框架2

    Spring切面可以应用5种类型的通知: 前置通知(Before):在目标方法被调用之前调用通知功能; 后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么; 返回通知(After-returning...):在目标方法成功执行之后调用通知; 异常通知(After-throwing):在目标方法抛出异常后调用通知; 环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为...Spring容器,使用纯Java代码实现 在性能上,由于Spring AOP是基于动态代理来实现的,在容器启动时需要生成代理实例,在方法调用上也会增加栈的深度,使得Spring AOP的性能不如AspectJ...而不是成为像AspectJ一样的AOP方案。   ...因为AspectJ在实际运行之前就完成了织入,所以说它生成的类是没有额外运行时开销的 指标项 Spring AOP AspectJ 使用语言 在纯 Java 中实现 使用 Java 编程语言的扩展实现

    61320

    kotlin语言使用初体验(一)

    我把在写在这一百多行代码的过程中体会到的kotlin 和Java的差异和大家分享一下, 通过对比侧面的说明一下kotlin的优点 一 在Java中所有的代码都必须写在类里面,类是可运行程序的最小单元,...而在konlin中则没有这种限制,可以直接新建一个文件,在文件的头部声明一个包,然后就可以直接编写函数了,而不必像Java一样必须要仪式性的声明一个类 ?...比Java简洁的多,跟JavaScript比较相似 二 ? Kotlin有类型推断功能, 不必像Java一样在声明变量前必须指定冗长的类型名称。...假如一个Java编写的类中的有getXXX和setXXX两个方法, 那么在kotlin中使用这个Java类中不必再去写getXXX和setXXX这样的代码, 直接通过obj.xxx和obj.xxx =...因为实现这个程序的代码量不多, 所以总结出来的kotlin语法特性并不完整, 但总体来说还是能表现出一些优于Java的特点, 之后关于使用kotlin的心德, 还是会持续更新的。

    81350

    编程不适合12小时工作制,“我有灵感才工作” | 专访《Java编程思想》作者Bruce Eckel

    当然还有其他新增特性,我这里只是以函数式编程为例,Java 8 加入了 lambdas 和 streams 等函数式编程原语。这改变了代码的编写方式,增加了可写的代码种类。...而在介绍了这一变化之后,我就会在新书的后续部分用到这个特性。 当然,之后的新版本又增加了其他特性,但在重要性方面还是不如 Java 8 中的函数式编程。...因为在它之前,我只用过类型化语言,稍微用过一点 Perl。 我有过这样一段经历:有一次,我写了点 Perl 代码。隔了几周之后,我发现自己已经看不懂写的是什么了。我不想用那些我自己理解不了的代码。...所以我觉得 Kotlin 做得不错,它从 Scala 和 Python 那边学到了类,而且又在类之外设置了函数的概念。比如,我发现自己在 Python 中编程时,往往会从编写函数开始,但这好像不太对。...总之,在函数式编程中设置对象、或者在面向对象编程中设置函数,都会让人感觉很难受。 现在有种相当强烈的声音,反对以往那种面向对象编程。

    63710

    Kotlin的面向对象编程,深入讨论继承写法的问题

    那么直到最近,《第一行代码 第3版》已经完成了部分章节的编写,并且在讲解Kotlin继承这部分内容时我特意讲了一下这个括号问题,那么今天我就讲这部分内容分享出来,从而兑现之前对大家的承诺。...这就是Kotlin不同的地方,在Kotlin中任何一个非抽象类默认都是不可以被继承的,相当于Java中给类声明了final关键字。...有的朋友可能会说,在init结构体当中去调用不就好了,这或许是一种办法,但却绝对不是一种好办法,因为绝大多数的场景我们都是不需要编写init结构体的。...,但是到目前为止,继承时的括号问题还没有进一步延伸,暂时和之前学过的场景是一样的。...另外由于没有主构造函数,次构造函数只能直接调用父类的构造函数,上述代码也是将this关键字换成了super关键字,这部分就很好理解了,因为和Java比较像,我也就不再多说了。

    85230

    Kotlin实战【一】Kotlin定义与目的

    (2)Kotlin 还可以编译成 JavaScript,允许你在浏览器中运行 Kotlin 代码。...当你需要的时候,可以使用可变数据,也可以编写带副作用的函数,而且不需要跳过任何多余的步骤。然后,毫无疑问的是,在 Kotlin 中使用基于接口和类层次结构的库就像 Java 一样简单。...当编写 Kotlin 代码的时候,可以结合使用面向对象编程和函数式编程风格,并使用最合适的工具来对付亟待解决的问题。...不光如此IDE的支持也是完美: - 自由的在java和Kotlin源码文件之间切换 - 调试混合语言的项目,可以在不同语言编写的代码之中单步调试 - 重构java方法的时候,kotlin...代码中的对他们的调用也会得到更新 - 重构kotlin方法的时候,java代码中的对他们的调用也会得到更新 四、Kotlin的编译过程 Kotlin的源代码存放在后缀名为.kt的文件中

    94430

    浅谈Kotlin的Checked Exception机制

    Kotlin正在被越来越多的开发者接受和认可。 许多学习Kotlin的开发者之前都是学习过Java的,并且本身Kotlin就是一款基于JVM语言,因此不可避免地需要经常和Java进行比较。...Kotlin的诸多特性,在熟悉Java的开发者看来,有些人很喜欢,有些人不喜欢。但即使是不喜欢的那些人,一旦用熟了Kotlin进行程序开发之后,也难逃真香定律。...有了Checked Exception,就可以保证我们的程序不会存在一些隐藏很深的潜在异常,不然的话,这些异常会像定时炸弹一样,随时可能会引爆我们的程序。...; } ... } 然后当你觉得需要对这个异常进行捕获时,再对它进行捕获即可,相当于你仍然可以按照之前在Java中捕获异常的方式去编写Kotlin代码,只是没有了强制的要求,你可以自由选择要不要进行捕获和抛出...但是,希望你自此往后,在使用Kotlin编程程序时,不要再为有没有Checked Exception的问题所纠结了。

    1.5K43

    Room & Kotlin 符号的处理

    由于并不是所有 Kotlin 源代码中的内容都能用 Java 表示,因此有些信息会在这种转换中丢失。同样,Kotlin 是一种多平台语言,但 KAPT 只在面向 Java 字节码的情况下生效。...Kotlin 和 Java 可以互操作,但模式却不相同,例如,Kotlin 中特殊类的类型如 Kotlin 的值类或者 Java 中的静态方法。...现有的 Room 代码库是为了处理 Java 源代码而写的。当应用是由 Kotlin 编写时,Room 只能识别该 Kotlin 在 Java 存根中的样子。...例如,Kotlin 中的 suspend 函数在编译时生成如下签名: // kotlin suspend fun foo(bar:Bar):Baz // java Object foo(bar:Bar,...从技术层面上讲,您仍然可以像使用 Google Maven 库 一样使用它,但是没有 API 保证可以这样做,因此您绝对应该使用 shade 技术。

    76430

    Kotlin 从拒绝到真香

    所以本着“先问是不是,再问为什么”的原则,我们在讨论“Kotlin 比 Java 好在哪里之前”,必须先说清楚“Kotlin 比 Java 好吗”这个问题。...关于判断语言是否优秀,我们听过最多的可能就是“XXX 是最好的语言”了。不过这种旧世界的观点,在大家充分学习了网络上的编程知识之后,现在都成为大家调侃的段子了。...这就导致我们程序员在编写状态复杂,流程冗长的代码的时候,容易出现错误。这是人大脑的特点决定的,无法避免。 但劳动人民的智慧是无穷的,程序员们想出各种办法来降低自己犯错概率。...Kotlin 相比 Java,他的语法表达更简洁,更容易写出低耦合,高内聚的代码;且和 Java 互操作的特性,可以直接使用 Java 的轮子,大大缩短了建设 Kotlin 生态的过程。...Kotlin 需要编写的代码更少,是因为 Kotlin 对语意有更精简的表达,你在习惯之后可以比 Java 更快的阅读完同样的功能。这点在后面我会继续说明。 对需求变更友善。

    1.4K20

    KMM 求生日记二:KotlinNative 被踩中的坑

    然后我在 Android 的主工程中编写这些桥接接口的实现,以及对 KMM 中业务逻辑的调用。...在 Android 上完成基本的测试,能跑通之后,由我的一位同事(也是小组 leader)在 iOS 主工程中编写类似我在 Android 主工程中编写的代码(Objective-C)。...Java 所有类的根级父类是 Object,但是在 Kotlin/JVM 中,这两者是统一的,也就是说如果一段 Java 代码接收的参数类型是 Object,那我们仍然可以将任意一个 Kotlin 对象作为参数传入...上述差异导致的最严重问题就是 Kotlin/Native 类在 Kotlin 工程中拿不到 class 对象。在 Java 中所有类都有类型为 Class的是,在 Kotlin 工程中如果直接声明一个类继承自 NSObject,可以用 class() 函数来获取自身的 class 对象,但普通的 Kotlin 类则没有这个函数。

    2.7K10

    如何判断一门语言的好坏

    所以本着“先问是不是,再问为什么”的原则,我们在讨论“Kotlin 比 Java 好在哪里之前”,必须先说清楚“Kotlin 比 Java 好吗”这个问题。...关于判断语言是否优秀,我们听过最多的可能就是“XXX 是最好的语言”了。不过这种旧世界的观点,在大家充分学习了网络上的编程知识之后,现在都成为大家调侃的段子了。...这就导致我们程序员在编写状态复杂,流程冗长的代码的时候,容易出现错误。这是人大脑的特点决定的,无法避免。 但劳动人民的智慧是无穷的,程序员们想出各种办法来降低自己犯错概率。...Kotlin 相比 Java,他的语法表达更简洁,更容易写出低耦合,高内聚的代码;且和 Java 互操作的特性,可以直接使用 Java 的轮子,大大缩短了建设 Kotlin 生态的过程。...Kotlin 需要编写的代码更少,是因为 Kotlin 对语意有更精简的表达,你在习惯之后可以比 Java 更快的阅读完同样的功能。这点在后面我会继续说明。 对需求变更友善。

    84140

    Kotlin系列一:基础知识快速入门

    kotlin将代码编译成同样规格的class文件让Java虚拟机识别,它继承了Java的全部财富,和Java100%兼容的,可以直接调用使用Java编写的代码,也可以无缝使用Java第三方的开源库;Kotlin...的类型推断也在Java 8 中被推出,Lambda作为函数式编程的基础也在Java 8版本中加入,两者会越来越像。...val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。...var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。...当一个函数中只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接即可: fun largerNumber(num1: Int, num2: Int

    82510
    领券