java object类_快速上手 Kotlin 开发系列之与 Java 互调 (1)
学习完基础语法之后,我们来学习下 Java 和 Kotlin 互相调用的问题
本节将介绍 Kotlin 与 Java 之间的语法变化
Kotlin 文件中的函数
首先让大家感到非常不适应的一点是,Kotlin 的函数居然可以直接写在文件中,而不用写在类中,但如果你知道 Kotlin 的代码编译以后依旧是 JVM 平台的一个 class,这一点应该就很好理解了。 例如,我们在 Utils.kt 中写如下函数:
在 Java 的类中可以做如下的调用:
从调用可以看出,Kotlin 文件中的函数编译后直接转换为对应文件名 + Kt 类中以 public static 开头的方法。
object 关键字
还有一种 Kotlin 中特殊的语法,object + 类声明,这种写法是在 Kotlin 中创建一个匿名内部类的写法:
如果在 Kotlin 代码中则可以直接调用:
如果在 Java 代码调用,需要使用以下方法:
简单分析下,其实构造方法变成了私有方法,暴露了一个静态的当前实例 INSTANCE ,通过它我们可以访问到其中的方法。
通过 Java 代码调用我们能够看出, object 关键字的类其实是 Kotlin 单例的一种写法。
Class 和 KClass
使用 Java 时我们有的时候传递某个类的 class,但是在 Kotlin 中调用 Java 类的 class 需要在后面追加 .java,例如我们有一个 JavaMain.java 的 Java 类,我们使用它的 class 时则需要这样调用:JavaMain::class.java。
为什么会有这样的特殊语法呢?这是因为 Kotlin 的 class 和 Java 的 class 格式是不一致的。 在 Kotlin 中,所有的类并不是编译成 Class,而是编译成 KClass,例如:
与 Java 在关键字上的冲突
例如在 Java 类中有一个变量 in :
而 in 在 Kotlin 中是一个关键字,如果在 Kotlin 中调用就会报错
正确调用方法应该是将该变量使用两个反引号包裹(`)
以上就是本节内容,欢迎大家关注~
java object类_快速上手 Kotlin 开发系列之与 Java 互调 (1)相关推荐
- 快速上手 Kotlin 开发系列之数据类和枚举
本节讨论 Kotlin 的数据类.枚举类和密闭类. 数据类 数据类是 Kotlin 中很特殊的一种类,它可以将我们类中的成员变量自动的生成 getter/setter 方法,以及我们经常需要重写的 t ...
- java 映射类_将数据库类型映射到具体的Java类
解 答案比使用getMetaData方法更复杂,因为getMetaData方法返回的整数类型和完整的类名没有直接映射.此解决方案需要两段代码: >实现一个方法来获取java.sql.Types常 ...
- java转安卓快吗_安卓Kotlin开发系列之Java快速转Kotlin
原标题:安卓Kotlin开发系列之Java快速转Kotlin 自从Kotlin被宣布为Android开发语言的官方支持后,如今可谓是火的一塌糊涂,作为一名Android程序员,如何快速爬坑?今天为大家 ...
- 几个特性,快速上手Kotlin
前言 因为工作需要,所以最近大量的时间都用在了对Kotlin的提升上.所以最近的文章基本都是关于Kotlin的了内容. 这不是一个死扣细节的文章,而是一个帮助小伙伴们快速由Java(Android)转 ...
- 复习Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节
Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 Stri ...
- WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧
2019独角兽企业重金招聘Python工程师标准>>> 下载WijmoJS 2019 v1 WijmoJS是为企业应用程序开发而推出的一系列包含HTML5和JavaScript的开发 ...
- AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发
摘要: 华为云社区邀请到了AI Gallery的负责人严博,听他谈一谈AI Gallery的设计初衷.经典案例以及未来规划. 本文分享自华为云社区<AI专家一席谈:复用算法.模型.案例,AI G ...
- java基础之Object类_繁星漫天_新浪博客
在JDK中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承该类. 例如: class Cat { public void shout(){ System.out.println( ...
- 【Scala教程】如何在已掌握的Java知识基础上快速上手Scala?【个人学习记录】
如何在已掌握的Java知识基础上学习Scala 前言 正文开始! 1. 编译运行 2. 声明变量 3. 输出 4. 显式指定变量类型 5. 范围区间 6. 写入文本文件 7. 读取文本文件 8. if ...
最新文章
- SAP MM 如何通过SAP User ID拿到User的基本信息?
- 深度学习利器:TensorFlow在智能终端中的应用——智能边缘计算,云端生成模型给移动端下载,然后用该模型进行预测...
- 如何快速理解递归——看这个就可以了
- linux i2c触摸屏驱动程序,触摸屏i2c设备和驱动的创建流程及方法
- Python 多线程爬取西刺代理
- ES6/03/函数的定义方式和调用方式,函数内的this指向,改变函数中this指向的三个方法(call(),apply(),bind())
- oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法
- 通过pxe远程安装linux,通过PXE远程安装Linux系统
- 脱库数据分享论坛_22G疑为12306脱库文件大揭秘
- DUMP-CX_SY_OPEN_SQL_DB-DBSQL_DUPLICATE_KEY_ERROR
- JS对List集合进行排序
- MemTest64内存测试
- ORBSLAM3整体框架
- 人脸识别-特征脸方法
- 从链家网上爬取租房数据并进行数据分析
- 吴忌寒何以成“眼中钉”?
- html情侣相册,浪漫的情侣相册名字
- 【生信】全基因组关联分析(GWAS)原理
- 校园网同时连手机和电脑、用数据线给电脑连网
- 平面直角系【坐标系旋转】、【点绕坐标系旋转】、【A点绕B点旋转】
热门文章
- 求助求助给win10安装智能abc结果电脑废了
- 计算机的认识文档,认识计算机教案
- 【Python 第5课】变量
- 药品药店管理系统c语言设计,java毕业设计_springboot框架的药店药品货架管理系统...
- JSP学习笔记(五)文件上传
- 0xC0000005: 写入位置 0x00000000 时发生访问冲突
- ufs 固态硬盘_手机机身存储到底有多快?UFS闪存和电脑固态硬盘谁更强?
- rs485如何使用_电子尺及电阻尺距离传感器是如何选择的?
- Andrew机器学习第一课
- xml文档声明及基本语法