Kotlin最简单的入门教程——与Java互相调用
2017-06-15 10:49
447 查看
Kotlin 中调用 Java 代码
Java 中调用 Kotlin
可变参数传递
Java 反射
已映射类型
一些非原生的内置类型也会作映射:
Java 的装箱原始类型映射到可空的 Kotlin 类型:
请注意,用作类型参数的装箱原始类型映射到平台类型: 例如,List
import java.util.* fun demo(source: List<Int>) { val list = ArrayList<Int>() // “for”-循环用于 Java 集合: for (item in source) { list.add(item) } // 操作符约定同样有效: for (i in 0..source.size() - 1) { list[i] = source[i] // 调用 get 和 set } }
Java 中调用 Kotlin
// example.kt package demo class Foo fun bar() { } // Java new demo.Foo(); demo.ExampleKt.bar();
静态方法
class C { companion object { @JvmStatic fun foo() {} fun bar() {} } } //现在,foo() 在 Java 中是静态的,而 bar() 不是: C.foo(); // 没问题 C.bar(); // 错误:不是一个静态方法 C.Companion.foo(); // 保留实例方法 C.Companion.bar(); // 唯一的工作方式
可变参数传递
Java 类有时声明一个具有可变数量参数(varargs)的方法来使用索引。 public class JavaArrayExample { public void removeIndices(int... indices) { // 在此编码…… } } 在这种情况下,你需要使用展开运算符 * 来传递 IntArray: val javaObj = JavaArray() val array = intArrayOf(0, 1, 2, 3) javaObj.removeIndicesVarArg(*array) 目前无法传递 null 给一个声明为可变参数的方法。
Java 反射
Java 反射适用于 Kotlin 类,反之亦然。 如上所述,你可以使用 instance::class.java, ClassName::class.java 或者 instance.javaClass 通过 java.lang.Class 来进入 Java 反射。 其他支持的情况包括为一个 Kotlin 属性获取一个 Java 的 getter/setter 方法或者幕后字段、 为一个 Java 字段获取一个 KProperty、为一个 KFunction 获取一个 Java 方法或者构造函数,反之亦然
已映射类型
Java 类型 | Kotlin 类型 |
---|---|
byte | kotlin.Byte |
short | kotlin.Short |
int | kotlin.Int |
long | kotlin.Long |
char | kotlin.Char |
float | kotlin.Float |
double | kotlin.Double |
boolean | kotlin.Boolean |
Java 类型 | Kotlin 类型 |
---|---|
java.lang.Object | kotlin.Any! |
java.lang.Cloneable | kotlin.Cloneable! |
java.lang.Comparable | kotlin.Comparable! |
java.lang.Enum | kotlin.Enum! |
java.lang.Annotation | kotlin.Annotation! |
java.lang.Deprecated | kotlin.Deprecated! |
java.lang.CharSequence | kotlin.CharSequence! |
java.lang.String | kotlin.String! |
java.lang.Number | kotlin.Number! |
java.lang.Throwable | kotlin.Throwable! |
Java type | Kotlin type |
---|---|
java.lang.Byte | kotlin.Byte? |
java.lang.Short | kotlin.Short? |
java.lang.Integer | kotlin.Int? |
java.lang.Long | kotlin.Long? |
java.lang.Character | kotlin.Char? |
java.lang.Float | kotlin.Float? |
java.lang.Double | kotlin.Double? |
java.lang.Boolean | kotlin.Boolean? |
最后欢迎加入Kotlin QQ群,一起讨论学习:
欢迎关注 微信公号
相关文章推荐
- C#调用存储过程的方法,和简单存储过程创建的方法实例。【转载】为入门的朋友引路,大家互相学习。
- java jni 入门1 - 一个简单的从Java程序中调用C函数
- Kotlin最简单的入门教程——环境
- Kotlin最简单的入门教程——关键字,操作符,异常,空指针
- Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类
- 从零开始学习 webservice第一集,java webservice简单实例入门教程
- WebService 简单入门教程(Java)
- Kotlin最简单的入门教程——基础类型(一)
- 写给Android开发者的Java 8简单入门教程
- Kotlin最简单的入门教程——集合
- Java Spring开发环境搭建及简单入门示例教程
- jHipster 3.4 创建最流行Java Web应用项目最简单的入门基本教程
- WebService 超简单入门教程(Java)
- Kotlin最简单的入门教程——基础类型(二)
- WebService 超简单入门教程(Java)
- WebService 超简单入门教程(Java)
- WebService 超简单入门教程(Java)
- Js调用Java方法并互相传参的简单实例
- Kotlin最简单的入门教程——委托
- Kotlin最简单的入门教程——类和继承