You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Kotlin访问Java文件中的包私有顶级类?

同包Kotlin类访问Java包私有顶级类的解决方案

你遇到的问题是Kotlin与Java可见性规则不兼容导致的:同包下的Kotlin类无法直接访问Java的包私有顶级类,哪怕两者在同一个com.example.mypackage包内。Java的包私有(无访问修饰符)权限只对同包的Java代码开放,Kotlin不识别这种包级可见性,所以会报“Unresolved reference”错误。

因为自动生成的Java文件无法修改,你可以通过一个中间Java类来实现访问:

  • 在com.example.mypackage包下新建一个公共Java类,作为访问桥接层,利用Java可以访问同包私有类的特性,将目标类的构造或实例获取逻辑暴露出来。

示例代码如下:

桥接Java类(JavaClassAccessor.java)

package com.example.mypackage;

public class JavaClassAccessor {
    // 暴露Class1的构造方法
    public static Class1 createClass1() {
        return new Class1();
    }

    // 暴露Class2的实例获取方式
    public static Class2 getClass2() {
        return new Class2();
    }
}

Kotlin类中调用(KotlinClass.kt)

package com.example.mypackage

class KotlinClass {
    fun useJavaClasses() {
        val class1Instance = JavaClassAccessor.createClass1()
        val class2Instance = JavaClassAccessor.getClass2()
        // 正常使用两个实例
    }
}

这个方案不需要修改自动生成的Java文件,完全通过新增中间类实现访问。

内容的提问来源于stack exchange,提问作者Eyjafl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:18:20