属性
- Kotlin可以自动识别Java中的getter/setter,如果Java类只有一个setter,那么它在Kotlin中不会作为属性可见,因为Kotlin目前不支持只写(set-only)属性
- 在Java中可以过getter/setter操作Kotlin属性。如果属性名以is开头(属性类型并不要求时Boolean类型),属性的生成会按照如下方式
- 变量名与getter方法名与属性相同
- setter方法名为去掉is前缀
函数
-
在Kotlin文件中直接定义的函数为包级函数或者顶级函数(不在任何类中定义)。kotlin默认会以当前kotlin文件生成一个对应的类(只要该文件包含了顶级函数或顶级变量),类名为【文件名+Kt】,顶级函数会变成该类的静态方法,顶级变量会变成该类的静态变量
-
kotlin允许使用
@JvmName
注解来改变文件生成的类名1. 新建一个Person.kt的文件 @file:JvmName("Person") package cn.jannal.kotlin fun run() { println("Persond的run...") } 2. 在java代码中运行 public class PersonTest { public static void main(String[] args) { Person.run(); } }
-
kotlin可以将多个文件中的顶级函数生成到一个java类中,即合并,使用
@file:JvmMultifileClass
。1. 新建一个A.kt文件 @file:JvmName("User") //指定为多个文件中的顶级成员统一生成到一个类中 @file:JvmMultifileClass package cn.jannal.kotlin fun a(){ println("a") } 2. 新建一个B.kt文件 @file:JvmName("User") @file:JvmMultifileClass package cn.jannal.kotlin fun b(){ println("b") } 如果使用kotlinc编译器编译,必须同时编译A.kt和B.kt,不能分开编译 3. 在java中调用 public class UserTest { public static void main(String[] args) { User.a(); User.b(); } }
实例变量
-
Kotlin可以将属性暴露成实例变量&#