我有一门Kotlin 的课:

class KotlinClass(val enum: CompanionEnum) {

    companion object {
        enum class CompanionEnum(val value: String) {
            ENUM_1("AAAA"),
            ENUM_2("BBBB"),
        }
    }

    fun doSomething() {
        print( enum.value)
    }
}

我可以像这样在Kotlin代码中使用这个类,这样就可以很好地工作:

KotlinClass(KotlinClass.Companion.CompanionEnum.ENUM_1).doSomething()

但是我不能在Java代码中使用这个Kotlin代码:

new KotlinClass(KotlinClass.Companion.CompanionEnum.ENUM_1).doSomething();

Android Studio always tips me Expected class or package: enter image description here

那么,如何在不更改Kotlin代码的情况下在Java代码中使用这个Kotlin类呢?

推荐答案

我不确定这是为什么,可能与Kotlin代码生成的字节码中的包命名冲突有关,但我能够通过使用导入在Java中使用Kotlin代码,这在某种程度上避免了这种混乱.试试看:

import com.yourpackage.KotlinClass.Companion.CompanionEnum;

public class test {
    public void testMethod() {
       new KotlinClass(CompanionEnum.ENUM_1).doSomething();
    }
}

Java相关问答推荐

Java应用程序崩溃时试图读取联系人从电话

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

Java 21 struct 化连接货币,需要可预知的子任务异常排序

在bash中将数组作为Java程序的参数传递

是否在允许数组元素为空时阻止 idea 为空性警告?

JPanel透支重叠的JComcoBox

Java中的死锁及其重入锁和锁

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

用户填充的数组列表永不结束循环

使用存储在字符串变量中的路径目录打开.pdf文件

如何集成语义发布和BitBucket(Java项目)

将ByteBuffer异步写入InputStream或Channel或类似对象

无法播放音频:从资源加载库GStreamer-Lite失败

将stringBuilder + forloop转换为stream + map

如何在运行docker的应用程序中获取指定的配置文件

使用@ExceptionHandler的GlobalExceptionHandler还是来自服务器的REST应答的ResponseEntity?

使用Java线程进行并行编程

简化每个元素本身都是 map 列表的列表

message.acknowledge()没有';在使用Spring Boot在ActiveMQ中读取消息后,t将消息出列

ExecutorService:如果我向Executor提交了太多任务,会发生什么?