Kotlin和Java混合开发必读:基本的互操作

2023-11-16

在使用Kotlin和Java混合开发的时候,涉及到一些基本的互操作
一、属性的读写
1.Kotlin自动识别Java的属性的Getter和Setter
2.Java操作kotlin属性可以通过Getter和Setter的方式

二、空安全类型
1.Kotlin空安全类型的原理
空安全类型在Java中是没有的,在Kotlin中才有这个东西的。
Kotlin在编译的时候,会增加一个函数的调用,对参数值和返回值进行是否为空安全检查
可以通过事先确定哪些允许为空,哪些不允许。
可以通过使用@Nullable和@NotNull来弥补

三、几类函数的调用问题
1.包级函数:静态方法
包级函数在Kotlin中有,在Java中没有。
Kotlin在编译的时候,会为kotlin生成一个类,这个类包含了所有的包级函数,在Java看来,这些都是静态方法,Java在调用的时候,只需要按照静态方法的方式去调用就好了
2.扩展方法:带Receiver的静态方法
3.运算符重载:带Receiver的对应名称的静态方法

四、几个常见注解的使用
1.@JvmField:将属性编译为Java变量
是Kotlin和Java相互操作属性经常会遇到的问题
如果我们希望Kotlin的属性,无论是看起来还是编译后,都是像Java变量一样,可以使用这个注解
2.@JvmStatic:将对象的方法编译成Java静态方法
3.@JvmOverloads:默认参数生成重载对象,如果想要Java中看到使用这个变量的默认参数,就需要加一下这个注解
4.Kotlin类编译后,会生成静态文件,文件默认是kotlin类+Kt,在Java中可以根据kotlin类+Kt.方法使用,如果想要自定义指定这个类编译后的文件名,使用这个注解

五、NoArg和AllOpen(插件)
1.NoArg为被标记的类生产无参构造,支持Jpa注解,如@Entity
2.AllOpen为被标记的类去掉Final,在Kotlin中,所有的类都默认是Final的,无法被继承,加上这个注解,就去掉了Final,就允许被继承了,支持Spring的注解,如@Component
3.支持自定义注解类型,例如@PoKo

六、泛型
1.通配符Kotlin的”*”对应于Java的”?”
2.协变和逆变,由Java中的extends和super变成了out/in
Java 泛型super怎么理解?与 extends 有何不同?
3.没有Raw类型
1.Java中的List,在Kotlin中就要写成List<*>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin和Java混合开发必读:基本的互操作 的相关文章

随机推荐

  • matlab入门基础:矩阵操作(一)

    系列笔记目录 第二节 矩阵操作 一 创建特殊矩阵 矩阵的运算 文章目录 系列笔记目录 前言 一 创建特殊矩阵 二 矩阵运算 1 矩阵元素的修改 2 矩阵的变维 3 矩阵的变向 4 矩阵的抽取 练习 三 矩阵的数学运算 总结 前言 MATLA
  • C++ - Vector 计算 均值(mean) 和 方差(variance)

    C Vector 计算 均值 mean 和 方差 variance 代码 double sum std accumulate std begin resultSet std end resultSet 0 0 double mean sum
  • C++通讯录管理系统(简单版)

    这个通讯录管理系统是我听课后做的笔记 都是很基础的逻辑实现 第一次动手写了一个小案例感觉找到了一点方向 也希望能帮到一点忙 1 系统需求 通讯录是一个可以记录亲人 好友信息的工具 本教程主要利用C 来实现一个通讯录管理系统 系统中需要实现的
  • PowerDesigner将PDM导出生成WORD文档--温习老知识

    今天的温习老知识 是如何将一个PD设计的PDM来导出WORD文档 这是一个非常实用的功能 可以在软件过程的数据库设计文档编写中节省N多时间 那不废话了 我们就开始今天的讲解吧 第一步 点击Report Temlates 制作模板 第二步 时
  • 1. 创建和生成

    文章目录 创建和生成 从 python 列表或元组创建 使用 arange 生成 使用 linspace logspace 生成 np linspace 使用 ones zeros 创建 使用 random 生成 从文件读取 本教程内容旨在
  • Python:实现多个txt文本的简单合并,亲测简单好用,保姆教程

    声明 非原创 我是python废废 原博客连接为 Python批量合并多个txt文件 自由的小白的博客 CSDN博客 python 合并多个txt 我在这里只做分享 好博客要更多人看到嘛 一 成果展示 我希望实现简单的txt文本合并 合并前
  • APP的接口版本管理 实现多版本共存

    思路 用户请求url gt 拦截器拦截 gt 转发到真正处理类和方法 gt 返回结果 url注解类 package com jc app util apiVersion import java lang annotation 需要拦截的AP
  • platform 设备驱动实验

    目录 Linux 驱动的分离与分层 驱动的分隔与分离 驱动的分层 platform 平台驱动模型简介 platform 总线 platform 驱动 platform 设备 硬件原理图分析 试验程序编写 platform 设备与驱动程序编写
  • springcloud+docker+elk搭建日志分析系统

    springcloud docker elk搭建日志分析系统 elk架构 搭建步骤 创建对应配置文件 注 编排文件与logstash和kibana在同一文件夹下 logstash conf配置 input tcp mode gt serve
  • 人工智能的数学基石:揭秘人工智能十大数学基础

    人工智能 Artificial Intelligence 简称AI 正以惊人的速度改变着我们的生活 然而 要实现智能的机器 离不开数学的支持 本文将带你深入探索人工智能的数学基础 揭示AI背后的数学奥秘 一 线性代数 Linear Alge
  • 函数对象(重载括号运算符)

    函数对象 重载括号运算符 函数对象超出普通函数的概念 函数对象可以有自己的状态 在使用stl中 经常需要将函数对象作为算法的输入参数 或实例子化一个容器的输入参数
  • NodeJs之邮件(email)发送

    NodeJs之邮件 email 发送 一 介绍与需求 1 1 介绍 1 Nodemailer简介 Nodemailer是一个简单易用的Node js邮件发送插件 github地址 Nodemailer的主要特点包括 支持Unicode编码
  • SpringBoot+Shiro+LayUI权限管理系统项目-9.核心知识点总结

    1 说明 本篇讲一下本项目几个重要的知识点 详细看源码 文章下方捐赠或QQ联系捐赠获取 2 Shiro如何设置密码加密算法 1 在shiro配置文件中添加 Bean public HashedCredentialsMatcher hashe
  • 协方差矩阵的几何解释

    A geometric interpretation of the covariance matrix http www visiondummy com 2014 04 geometric interpretation covariance
  • Java线程:新特征-阻塞栈

    本文转载至 http lavasoft blog 51cto com 62575 222530 对于阻塞栈 与阻塞队列相似 不同点在于栈是 后入先出 的结构 每次操作的是栈顶 而队列是 先进先出 的结构 每次操作的是队列头 这里要特别说明一
  • 构建OpenCV和Raspberry Pi物体视觉追踪

    平移和倾斜伺服设备可帮助摄像机使用视觉自动跟踪颜色对象 OpenCV是免费的 可用于学术和商业用途 它具有C C Python和Java接口 并支持Windows Linux Mac OS iOS和Android 在我的系列OpenCV教程
  • scanf("%d\n",&num)中的\n是很特别的

    这是上篇博文 http blog csdn net u010412719 article details 48324799 中遇到的问题 详细原因明天再总结 总之 因为自己这样写了 花了很长时间才把这个bug调通 在scanf里 n 很特别
  • 小程序margin-bottom在IOS里面不起作用的解决方法

    margin bottom 是页面标签底部的元素属性 例如view中的定义按钮 如果想要距离底部有20rpx 按照常规写法margin bottom 20rpx 但是小程序用margin bottom在IOS手机出现失效问题 如何解决这个问
  • appuim+python常遇到的问题

    appuim python常遇到的问题 appuim使用过程中常见的问题 import time 一 内嵌H5定位 1 在web自动化中我们会遇见frame的问题 在遇见这些内嵌的标签后我们需要做的就是切换窗口 那么在app自动化测试也有类
  • Kotlin和Java混合开发必读:基本的互操作

    在使用Kotlin和Java混合开发的时候 涉及到一些基本的互操作 一 属性的读写 1 Kotlin自动识别Java的属性的Getter和Setter 2 Java操作kotlin属性可以通过Getter和Setter的方式 二 空安全类型