如何在Kotlin中获取对Java超类静态类的引用
我有第三方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获取
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()
}
}