首页 > 解决方案 > 嵌套在泛型父类中的类构造函数的函数参考

问题描述

如果我有

sealed class Foo<A> {
  data class Bar<A>(val value: Int): Foo<A>()
}

并且我想Bar<Int>使用运算符将​​构造函数称为隐式 lambda ::,然后以下均不被接受为有效语法:

如果我将嵌套类构造函数显式导入到作用域中,我可以引用它

import com.package.Foo.Bar

这使我可以::Bar为构造函数和Bar<Int>::value属性 getter 编写代码。但是我必须对每个嵌套的构造函数都这样做,这有点破坏了使用::运算符来节省打字的优势。

有没有我遗漏的符号可以让我避免导入所有嵌套的类名和构造函数?

编辑

我最初的示例不涉及泛型,结果证明我在我正在处理的实际代码中遇到的问题过于简单化了,它确实使用了泛型。

事实证明,对于没有泛型参数的嵌套类,Foo::Bar符号实际上是有效的,所以我最初的问题有一个错误的前提。但是,不可能在泛型类中创建对构造函数的可调用引用。这记录在以下错误报告中:https ://youtrack.jetbrains.com/issue/KT-15952

标签: kotlin

解决方案


外卡进口呢?

import com.package.Foo.*

推荐阅读