如何在KMM中创建一个特定平台类的实例?

发布于 2025-01-22 16:28:38 字数 500 浏览 0 评论 0原文

例如,我有下一类声明:

// commonMain 
expect class MyUseCase {
    operator fun invoke()
}
// androidMain
actual class MyUseCase {
    actual operator fun invoke() {}
}
// iosMain
actual class MyUseCase {
    actual operator fun invoke() {}
}

有没有办法在commonmain中创建myusecase的实例?

// commonMain
val useCase = MyUseCase() // Doesn't work

ps 必须有可能Cuz Kotlin 在创建类实例的那一刻具有有关实际实现的信息。

For example, I have the next class declarations:

// commonMain 
expect class MyUseCase {
    operator fun invoke()
}
// androidMain
actual class MyUseCase {
    actual operator fun invoke() {}
}
// iosMain
actual class MyUseCase {
    actual operator fun invoke() {}
}

Is there a way to create an instance of MyUseCase in commonMain?

// commonMain
val useCase = MyUseCase() // Doesn't work

P.S. It must be possible cuz Kotlin has information about actual implementations at the moment when it will create an instance of the class.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花期渐远 2025-01-29 16:28:38

您需要为班级添加一个构造函数:

// commonMain 
expect class MyUseCase() {
    operator fun invoke()
}
// androidMain
actual class MyUseCase actual constructor() {
    actual operator fun invoke() {}
}
// iosMain
actual class MyUseCase actual constructor() {
    actual operator fun invoke() {}
}

You need to add a constructor for your class:

// commonMain 
expect class MyUseCase() {
    operator fun invoke()
}
// androidMain
actual class MyUseCase actual constructor() {
    actual operator fun invoke() {}
}
// iosMain
actual class MyUseCase actual constructor() {
    actual operator fun invoke() {}
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文