Kotlin 与 Java 可以无缝互操作,这是 Kotlin 设计的核心目标之一。下面从 工程配置、互相调用、注意事项、最佳实践 四个方面说明。
在 build.gradle 中同时支持 Java 和 Kotlin:
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.9.22'
id 'java'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib"
}
目录结构:
src/
├── main/
│ ├── java/ // Java 代码
│ └── kotlin/ // Kotlin 代码
✅ Java 和 Kotlin 可以互相直接引用
// Kotlin
class User(val name: String)
// Java
User user = new User("Tom");
System.out.println(user.getName());
➡ Kotlin 的 val name 会自动生成 getName()
// File: StringUtils.kt
fun hello(): String = "Hello"
// Java
String s = StringUtilsKt.hello();
➡ 文件名 + Kt 作为静态类
object Config {
fun getUrl() = "http://x.com"
}
Config.INSTANCE.getUrl();
fun test(name: String?) {}
Java 调用时:
test(null); // 编译通过,但运行时需注意 NPE
✅ Kotlin 的 @Nullable / @NotNull 注解会暴露给 Java
// Java
public class Order {
public String id;
public String getId() { return id; }
}
val order = Order()
order.id = "1"
✅ 自动识别 getter / setter
void printAll(String... args) {}
printAll("a", "b")
Java 类型在 Kotlin 中默认是 平台类型:
val s: String! = javaMethod()
⚠ 编译器不保证非空,需要自己判断
opencompanion object 或 @JvmStatic@JvmOverloads、@JvmStatickotlinx.* 替代部分 Java 库如果你有 具体场景(如 Spring、Android、Gradle 多模块),我可以直接给你示例工程结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。