java代码可以调用kotlin方法吗_在 Java 中调用 Kotlin 语言的方法

Java 可以轻松调用 Kotlin 代码。

属性

Kotlin 属性会编译成以下 Java 元素:

一个 getter 方法,名称通过加前缀  get  算出;

一个 setter 方法,名称通过加前缀  set  算出(只适用于  var  属性);

一个私有字段,与属性名称相同(仅适用于具有幕后字段的属性)。

例如, var firstName: String 编译成以下 Java 声明:

private String firstName;

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

如果属性的名称以 is 开头,则使用不同的名称映射规则:getter 的名称与属性名称相同,并且 setter 的名称是通过将  is 替换为  set 获得。 例如,对于属性  isOpen ,其 getter 会称做  isOpen() ,而其 setter 会称做  setOpen() 。 这一规则适用于任何类型的属性,并不仅限于  Boolean 。

包级函数

在 org.foo.bar 包内的  example.kt 文件中声明的所有的函数和属性,包括扩展函数, 都编译成一个名为  org.foo.bar.ExampleKt 的 Java 类的静态方法。

// example.kt

package demo

class Foo

fun bar() {

}

// Java

new demo.Foo();

demo.ExampleKt.bar();

可以使用 @JvmName 注解修改生成的 Java 类的类名:

@file:JvmName("DemoUtils")

package demo

class Foo

fun bar() {

}

// Java

new demo.Foo();

demo.DemoUtils.bar();

如果多个文件中生成了相同的 Java 类名(包名相同并且类名相同或者有相同的 @JvmName 注解)通常是错误的。然而,编译器能够生成一个单一的 Java 外观类,它具有指定的名称且包含来自所有文件中具有该名称的所有声明。 要启用生成这样的外观,请在所有相关文件中使用 @JvmMultifileClass 注解。


版权声明:本文为weixin_32775495原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。