如何在Kotlin中获取对Java超类静态类的引用

如何在Kotlin中获取对Java超类静态类的引用,kotlin,kotlin-java-interop,Kotlin,Kotlin Java Interop,我有第三方Java代码示例: public类ApiClass扩展PackagePrivateClass{ } 抽象类PackagePrivateClass{ 公共静态类StaticClass{ } } 因此,只有apicclass和StaticClass是公共的。在Java中,我可以通过:apicclass.StaticClass获得对StaticClass的引用。对于Kotlin中的相同代码,我得到了未解析的引用:StaticClass。我也无法通过PackagePrivateClass获取

我有第三方Java代码示例:

public类ApiClass扩展PackagePrivateClass{
}
抽象类PackagePrivateClass{
公共静态类StaticClass{
}
}
因此,只有
apicclass
StaticClass
是公共的。在Java中,我可以通过:
apicclass.StaticClass
获得对
StaticClass
的引用。对于Kotlin中的相同代码,我得到了
未解析的引用:StaticClass
。我也无法通过
PackagePrivateClass
获取参考,因为它是包私有的(显然)。是否有任何黑客可以获取对
StaticClass
(这是第三方代码,所以我不能简单地将PackagePrivateClass
公开
)的引用


我知道这可能是“出于设计”,但它禁止我使用3p代码。似乎唯一的解决方案是构建您的kotlin类可以访问的Java包装类

public class ApiClass extends PackagePrivateClass {

}

abstract class PackagePrivateClass {

    public static class StaticClass {

        void instanceFunction() {

        }

        static void classFunction() {
        }
    }
}
适配器java类(StaticClassAdapter.java):

所以在你的kotlin代码中

class KotlinClass {

    fun main() {
        StaticClassAdapter().instanceFunction()
        StaticClassAdapter.classFunction()
    }
}

你试过kotlin reflection吗,
class KotlinClass {

    fun main() {
        StaticClassAdapter().instanceFunction()
        StaticClassAdapter.classFunction()
    }
}