kotlin汇总9-在kotlin中调用java
来源:互联网 发布:js 中什么是全局对象 编辑:程序博客网 时间:2024/05/21 00:00
1.在kotlin中调用Java
下面的几乎全java代码都可以直接在kotlin使用
import java.util.*fun demo(source: List<Int>) { val list = ArrayList<Int>() // 'for'-loops work for Java collections: for (item in source) { list.add(item) } // Operator conventions work as well: for (i in 0..source.size() - 1) { list[i] = source[i] // get and set are called }}
1.1 Getters和Setters
Java中set/get开头的无参方式,在kotlin中可以直接当做属性使用,比如下面代码
import java.util.Calendarfun calendarDemo() { val calendar = Calendar.getInstance() if (calendar.firstDayOfWeek == Calendar.SUNDAY) { // call getFirstDayOfWeek() calendar.firstDayOfWeek = Calendar.MONDAY // call setFirstDayOfWeek() }}
另外需要注意,如果只有setter,那么在kotlin将会不可见,因为kotlin不支持set-only的属性。
1.2 方法返回void
Java中的void等于kotlin中的Unit
1.3 反义kotlin中的关键字
比如in, object, is 是kotlin中的关键字,
比如java代码
class Foo { boolean isBar(){ retrurn true; }}
在kotlin中调用这个方法,需要反义is,如下:
foo.`is`(bar) // 通过``包围可能是kotlin关键字
1.4 null安全和平台类型
因为所有Java的引用都可能是Null,所以所有来自Java的对象,你都需要像在Java中一样确保对象不为空
val list = ArrayList<String>() // non-null (constructor result)list.add("Item")val size = list.size() // non-null (primitive int)val item = list[0] // platform type inferred (ordinary Java object)val nullable: String? = item // allowed, always worksval notNull: String = item // allowed, may fail at runtime ,因为item有可能是null,但是notNull是不能为空,所以运行时会报错
1.5 类型映射
原始类型对应关系
非原始的内置类对应关系
Java封装原始类型对应kotlin的可空类型
注意
List<java.lang.Integer>对应kotlin的List<Int!>
collections对应关系
Java数组对应关系
Java泛型对应
Java的?通配符Foo<? extends Bar> becomes Foo<out Bar!>!Foo<? super Bar> becomes Foo<in Bar!>!Java未加工类型List becomes List<*>!, i.e. List<out Any?>!
kotlin仅仅允许*通配符使用is,例如
if (a is List<Int>) // Error: cannot check if it is really a List of Ints// butif (a is List<*>) // OK: no guarantees about the contents of the list
Java的不定参数
public class JavaArrayExample { public void removeIndices(int... indices) { // code here... }}
在kotlin调用,使用*来传递
val javaObj = JavaArray()val array = intArrayOf(0, 1, 2, 3)javaObj.removeIndicesVarArg(*array)
在kotlin中使用JNI,使用external修饰符
external fun foo(x: Int): Double
阅读全文
0 0
- kotlin汇总9-在kotlin中调用java
- Kotlin基础教程-在kotlin中调用Java
- Kotlin基础教程-在Java中调用Kotlin
- Kotlin-Kotlin中调用Java
- Kotlin-Java中调用Kotlin
- kotlin汇总10-Java调用kotlin
- android kotlin与Java互操作(一)在 Kotlin 中调用 Java 代码
- Kotlin与Java的共存-Java中调用kotlin代码
- android项目中,java调用kotlin代码
- kotlin调用java
- java调用kotlin注意事项
- Kotlin-39.kotlin调用Java之一(Call Java from Kotlin)
- Kotlin-43.Java调用kotlin之一(Call Kotlin from Java)
- android kotlin与Java互操作(二)Java 中调用 Kotlin
- Kotlin 和 Java 相互调用
- Java?Kotlin?Kotlin!
- Java?Kotlin?Kotlin!
- Kotlin与Java的共存-kotlin调用java代码
- frontEnd
- Android客户端面试基础(四)-TCP/IP
- lda的吉布斯采样求解
- 黑盒测试方法(四)因果图
- 设计模式(二):策略模式
- kotlin汇总9-在kotlin中调用java
- sklearn特征选择类库使用小结
- 初次使用RTL8710AF开发板的一些心得
- Eclipse插件ObjectAid(UML画图工具)
- 使用URL下载网络图片
- Atom与markdown
- 第三人称摄像机跟随
- 链表的定义,链表的连接,指定节点的删除
- 滑动窗口协议与慢启动