Kotlin:无法从对象导入按需

Jir*_*ire 18 java kotlin

我正在尝试创建一个库,您可以object通过"静态导入" 调用函数(在Kotlin中按需导入).不幸的是,Kotlin似乎有一个限制,如下所示.

在此输入图像描述

为什么这是一个限制?我能做些什么来解决它吗?(我尝试使用带有伴随对象的类,在这种情况下,函数甚至无法解析.)

Rom*_*lov 12

如果我理解它是正确的,Sparkot是你的Kotlin课程.对象可以从超类型继承的东西,例如equals(),hashCode()将导入你每次*从对象导入,并作出决定,这将是太混乱.

* - 导入仅适用于Java对象.

  • 至少听到这个决定背后的想法是有帮助的,但这个限制是我现在决定将 Kotlin 转换解转换回 Java 的原因。Kotlin 被认为是一种有助于为 IntelliJ 创建语言插件的语言——它确实如此——但这是一个它肯定没有的地方。几乎任何使用 IElementType 持有者类的人都希望在大量使用它并且没有冲突的地方导入它的所有符号(如果他们重视没有腕管疼痛的生活,那就是)。... (3认同)
  • 好吧,Kotlin支持只按名称导入对象的单个成员,而不是*-import.IDE帮助它. (2认同)
  • IIRC 没有帮助这个特定场景,我想我什至可能已经看到一个 JetBrains 开发的插件完全从/子类他们的 IElementType-holder 类来解决这个问题。这样的解决方法肯定效率不高,而且绝对比这个理由试图避免的情况更糟。我并不是说我不明白限制背后的想法......只是讨论它如何可能伤害而不是帮助。 (2认同)

bre*_*dan 7

虽然您不能import package.KotlinObject.*直接从 Kotlin 对象中获取,但您可以 import package.*. 为避免不必要或不明确的导入,只需创建一个新包,声明您希望在原始.kt文件中导入的类、变量或扩展,然后从父包按需导入。

  • 这个imo是更有用的答案 (3认同)