Kotlin-39.kotlin调用Java之一(Call Java from Kotlin)_kotlin call java-程序员宅基地

技术标签: call  互操作  java  相互调用  kotlin  kotlin笔记  Kotlin  

官方文档: http://kotlinlang.org/docs/reference/java-interop.html

1.在Kotlin中调用Java代码(Calling Java code from Kotlin)

Kotlin在设计时就考虑了与Java的互操作性,
所以可以轻松在Kotlin中调用现有Java代码,也能顺利在Java中调用Kotlin代码!
在Kotlin使用Java的集合类的示例如下:
    import java.util.* //导入java类库util
    fun demo(source: List<Int>) {
        val list = ArrayList<Int>()
        // kotlin的for循环对Java集合类同样有效
        for (item in source) {
            list.add(item)
        }
        // kotlin操作符对java同样有效
        for (i in 0..source.size() - 1) {
            list[i] = source[i] //get和set访问器被调用(见下文)
        }
    }

2.Getter和Setter方法

如果java字段成员的getter和setter方法遵循Java惯例(即名称以get开头的无参数方法和以set开头的单参数方法),
它们在Kotlin中都被表示为kotlin属性,可以直接调用,例如:
    import java.util.Calendar //导入java日历类库
    fun calendarDemo() {
        val calendar = Calendar.getInstance()

        //相当于调用calendar.getFirstDayOfWeek()
        if (calendar.firstDayOfWeek == Calendar.SUNDAY) {

            //相当于调用calendar.setFirstDayOfWeek(Calendar.MONDAY)
            calendar.firstDayOfWeek = Calendar.MONDAY
        }
    }

注意:
    如果Java类某字段只有一个setter,在Kotlin中不会作为kotlin属性!
    因为Kotlin目前不支持只写(set-only)属性!

3.返回void的方法(Methods returning void)

如果一个Java方法返回void,那么从Kotlin调用时中返回Unit,
如果使用该方法的返回值,它将被Kotlin编译器在调用处赋值,因为该值本身是预先知道(即Unit)
    //kotlin代码
    fun main(args: Array<String>) {
        val v = VoidDemo.vid()
        println(v) // 输出kotlin.Unit
    }

    //java代码
    public class VoidDemo{
      public static void vid(){

        }
    }

4.对Java标识符(Kotlin关键字)进行转义(Escaping for Java identifiers)

一些Kotlin关键字在Java中是有效标识符(如in,object,is等),
如果Java类库使用了Kotlin关键字作为方法名,可用反引号(`)转义java方法名,然后在kotlin调用该方法
示例:
    //is()是java方法名/函数名,但is是kotlin关键字,所以在kotlin中需要添加反引号`转义
    foo.`is`(bar)

简书:http://www.jianshu.com/p/d75c0141d61e
程序员宅基地: http://blog.csdn.net/qq_32115439/article/details/75000034
GitHub博客:http://lioil.win/2017/07/11/Kotlin-javaInKotlin.html
Coding博客:http://c.lioil.win/2017/07/11/Kotlin-javaInKotlin.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32115439/article/details/75000034

智能推荐

射频MOS管和三极管优缺点对比_mos管比起三极管有什么优势-程序员宅基地

文章浏览阅读5.1k次。MOS管优点:1.具有良好的温度特性。2.具有良好的噪声特性。3.输入阻抗高。4.MOS管的漏极电流具有二次函数特性,三极管的集电极电流是指数形式。5.MOS管的上限频率远远超过三极管的上限工作频率。6.MOS管功耗较小。MOS管缺点:1.增益通常较低。2.输入阻抗高,导致匹配网络难设计。3.相对于三极管,MOS管的功率容量偏低..._mos管比起三极管有什么优势

华为云云耀云服务器L实例评测使用_华为云耀云服务器l实例跟腾讯云什么服务器类似-程序员宅基地

文章浏览阅读172次。其次就是会发送一条开通后的短信到手机上,这点还可以吧,不过也没太大必要,感觉要是第一次进这个服务器管理界面的话,有个服务器信息弹窗选择是新手还是老手,新手提示教程,老手提示服务器基础信息会更好一点,一般人买服务器都是在电脑上,感觉手机短信的不那么有必要。以下是进入后的界面,感觉还行吧,就是都是统一的黑色,没感觉到重点,熟悉后,应该会好一些,但是什么重置密码,设置网关什么的不好找到,需要详细的找一下,这点不太好。还有一次创建失败的信息,也不知道因为什么,在后边价格联系客服之类的应该会更好一点。_华为云耀云服务器l实例跟腾讯云什么服务器类似

在安装win7系统时如何不产生100M的系统保留分区_做系统的保留分区只有50mb-程序员宅基地

文章浏览阅读855次。在安装win7系统时如何不产生100M的系统保留分区 如果你是从xp系统升级安装,或者重新安装win7系统,应该不会出现所谓的100M系统保留分区情况。 这里说的安装指的的对新的磁盘或者删除了老的所有分区后的安装win7系统。 第一种方法:利用第三方分区工具先对磁盘进行分区。没有第三方工具,利用xp安装盘,进行磁盘分区也行。只要分区格式化就可以了,没有必要安装xp系统_做系统的保留分区只有50mb

大厂程序员都爱用的六款IDE工具,你都知道吗?_ide软件-程序员宅基地

文章浏览阅读2k次。给大家推荐六款好用的IDE工具,快来看看吧!_ide软件

若依项目框架解析_若依框架-程序员宅基地

文章浏览阅读6.7k次。若依_若依框架

ElementUI 自定义表头 el-table_elementui 表头自定义-程序员宅基地

文章浏览阅读1.6k次。ElementUI 自定义表头 el-table昨晚睡不着的时候,突然想到了前段时间做的一个需求,但是只记得大概了,所以早起复习一下在ElementUI 中,都知道 el-table 定义表格,但是很多时候,官方的并满足不了需求,这时候就需要用到官方提供的自定义表头首先,我们需要在 el-table-column 里面添加 render-header 属性<el-table-column v-for="(item, index) in columnList" :key="index" :_elementui 表头自定义

随便推点

显卡驱动 1080Ti Linux,Ubuntu18.04 Nvidia1080ti环境安装显卡驱动-程序员宅基地

文章浏览阅读483次。安装了1080ti显卡的电脑安装Ubuntu16.04和17.04都有烦人的黑屏问题,应该是内置显卡驱动不稳定导致的问题。安装刚新出的Ubuntu18.04尝试一下,很好很顺畅,没什么问题,系统直接安装成功,接着安装官方的显卡驱动。1、重启进入BIOS,将secure boot取消(设为disabled),再重启2、用命令lsmod | grep nouveau如果有东西输出,就要去关闭自带的No..._ubuntu18.04 1080ti 驱动

Nginx详解 五:反向代理-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏55次。正向代理代理的是客户端正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端反向代理代理的是服务端反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址。_反向代理

IE浏览器进行跳转时卡死/调用打印控件时卡死解决_ie浏览器打印文书时跳转过去就卡住怎么-程序员宅基地

文章浏览阅读197次。【代码】IE浏览器进行跳转时卡死/调用打印控件时卡死解决。_ie浏览器打印文书时跳转过去就卡住怎么

ADB的push和pull示例_adb pull 例子-程序员宅基地

文章浏览阅读1.6k次。简述**环境:**window10 cmd窗口adb push 电脑路径 手机路径adb pull 手机路径 电脑路径一、向手机推送应用文件并刷新adb rootadb remountadb push Z:\SDK\media_android9_rk3399\out\target\product\rk3399\system\priv-app\Settings /system/priv-appadb shell ps |findstr settingadb shell kill xxx二、_adb pull 例子

mysql group by 与order by 一起使用_mysql group by和order by一起用-程序员宅基地

文章浏览阅读898次。我需要把数据分组排序,于是就想到先group by 然后 order by,可是运行的时候报错于是查资料发现group by 与order by 一起使用是要遵守一定原则的:order by 的列,必须是出现在group by 子句里的列也可以用来查询一条语句(注意数据库版本)select * from (select distinct * from op_order_c..._mysql group by和order by一起用

Win10 1803 UEFI安装Linux Mint Cindy-程序员宅基地

文章浏览阅读1k次。为什么选择Linux Mint配置:游戏本,双显卡,与Linux的兼容不大好,Linux Mint提供了合适的驱动,安装完就可以正常使用。一些联想的品牌对Ubuntu的兼容性就比较好,可以去Ubuntu官网去查。安装Linux一些问题没有以dd方式刻录iso,一些比较新的镜像在开机时文件系统无法被识别,如kali-linux-2018.3安装完系统无法正常生成bootx64.efi,导致..._uefi安装linux mint

推荐文章

热门文章

相关标签