在 Android Studio Java 项目里混合 Kotlin 编程

首先,先搞明白一个概念,这里的 Java 混合 Kotlin 是指文件层级的混合,即 Java 代码还是写在 .java 文件中,Kotlin 代码还是写在 .kt 文件中,只不过是可以在 Java 的代码中可以调用自己写好的 Kotlin 类,从 Java 的角度看,它并不知道它调用的这个类是 Kotlin 写的,这个类和平时遇到的其他类的使用并没有什么特别的,例如"KotlinTest myKotlinTest = new KotlinTest();"

配置

  1. 先确保自己的 Android Studio 下载有 Kotlin 插件,查看路径 File -> Settings... -> Plugins -> 点击 Installed -> 查看 Languages 栏下是否有 Kotlin,如果有注意记一下版本(我的是1.9.0),等下配置要用

  2. 在项目根目录的 build.gradle 中,添加如下代码:

    buildscript {
    ext.kotlin_version = '1.9.0' // 添加代码 1
    dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 添加代码 2
    }
    }

需要注意的是,buildscript 需要在 plugins 标签之上,否则报错,贴一个正确图:

  1. 在需要混合编程的模块下的 build.gradle ,添加如下代码:

    plugins {
    id 'com.android.application'
    id 'kotlin-android' // 添加代码1 在该模块启动 Kotlin
    }
    ...
    android {
    ...
    // 添加代码2 指定 kotlin 使用的 Jvm 版本,注K意要与自己使用的JDK版本一致
    kotlinOption {
    jvmTarget = "1.8"
    }
    }
    ...
    dependencies {
    ...
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}" // 添加代码3 指定 Kotlin 版本
    ...
    }

至此,配置完成,接下里创建一个样例:

Kotlin 复制代码
class TestKotlin(val name: String, val age: Int) {  
    // 定义一个方法  
    fun sayHello() {  
        println("Hello, my name is $name and I am $age years old.")  
    }  
}  

// 可以直接运行
fun main() {  
    // 创建一个 Person 对象  
    val person = TestKotlin("Alice", 25)  
  
    // 调用对象的方法  
    person.sayHello()  
}

创建一个 Java 测试类来调用上面的 Kotlin 类的方法:

Java 复制代码
public class MainTest {  
    @Test  
    public void test() {  
        TestKotlin testKotlin = new TestKotlin("xxx", 1);  
        testKotlin.sayHello();  // 输出:Hello, my name is xxx and I am 1 years old.
    }  
}

完毕

相关推荐
huluang11 小时前
专业级安卓现场取证利器:拍照取证(PaiZaoXue),补齐行业取证工具核心短板
android·数码相机
奇特認11 小时前
MySQL集群技术 4.高可用之组复制 (MGR)
android
阿pin11 小时前
Android随笔-SurfaceFlinger
android·surfaceflinger
Rabitebla11 小时前
C++11 新特性详解(一):列表初始化、initializer_list 与右值引用
java·开发语言·数据结构·c++·算法·leetcode·list
洋不写bug11 小时前
JavaComparable、Comparator、Cloneable接口解析,深拷贝浅拷贝详细解析
android·java·开发语言
坐吃山猪11 小时前
WebFlux_学习Subscriber总结
java·开发语言·学习·webflux
白露与泡影11 小时前
Java面试题及答案整理(2026年金九银十最新版,持续更新)
java·开发语言
geovindu12 小时前
java: Memento Pattern
java·开发语言·后端·备忘录模式·行为模式
xcLeigh12 小时前
Unity基础:Start与Update方法——Unity脚本生命周期初探
java·unity·游戏引擎·教程
zephyr0512 小时前
链表实现O(n log n)时间复杂度的排序——归并排序详解
java·数据结构·算法