假如现在是 Java 和 Kotlin 混编的情况,新建了一个 KotlinCode.kt 文件如下:
package com.fq.kotlin
/**
* KotlinCode
*/
fun doSomething() {
}
然后 Java 代码中模拟调用 KotlinCode.kt 中的 doSomething()
方法,调用代码如下:
package com.fq.kotlin;
/**
* JavaCode
*/
public class JavaCode {
public static void main(String[] args) {
KotlinCodeKt.doSomething();
}
}
我们可以看到,如果想要调用 KotlinCode 中的方法,默认写法是 xxKt.method(),这个也是系统编译后的文件名,那么我们如果需要修改编译后生成的文件名呢?就是可以直接 KotlinCode.doSomething()
, 或者自定义类名.doSomething()
这种该如何去做呢?我们来看下面,
@file:JvmName("KotlinCode")
package com.fq.kotlin
/**
* KotlinCode
*
*/
fun doSomething() {
}
只需要在文件最上面添加一个注解,@file:JvmName("xxxName")
就可以了,这样你就可以直接通过你定义的这个 xxxName 直接进行 xxxName.doSomething()
了。
注意,必须要写在 package xxx 之前,不然编译器都会直接报错。
另外,如果有多个 Kt
文件你都进行自定义 Name ,并且有重复的,那么你就需要在重复的 JvmName
注解下多加一个 @file:JvmMultifileClass
注解了,这样的结果就是编译后会强制性的把多个文件内容合并在一起。
最后再贴上示例代码:
KotlinCode.kt
@file:JvmName("Code")
@file:JvmMultifileClass
package com.fq.kotlin
/**
* KotlinCode
*
*/
fun doSomething() {
}
JavaCode.java
package com.fq.kotlin;
/**
* JavaCode
*/
public class JavaCode {
public static void main(String[] args) {
Code.doSomething();
}
}
网友评论