在Kotlin中调用构造函数引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Kotlin中调用构造函数引用相关的知识,希望对你有一定的参考价值。

如果我有这样的kotlin类:

data class  Anim (val name : String , var age : Int) {

constructor (a:Anim):this(a.name, a.age) {
}

constructor () :this("Dog") {  }

}

我想要使​​用构造函数的引用语法,

val a = ::Anim 

然后我收到了这个错误:

overload resolution ambiguity: 
public constructor PornModel() defined in com.ripple.PornModel
public constructor PornModel(a: PornModel) defined in com.ripple.PornModel
public constructor PornModel(name: String, country: String = ...) 
defined in com.ripple.PornModel
    val a = ::PornModel::( String,  String))

请告诉我这些论点有多特别

任何帮助深表感谢!人

答案

如错误消息中所述,Kotlin编译器不知道选择哪个constructor重载。你明确说明了a的类型:

val twoArgs: (String, Int) -> Anim = ::Anim
val oneArg: (Anim) -> Anim = ::Anim
val noArg: () -> Anim = ::Anim

以上是关于在Kotlin中调用构造函数引用的主要内容,如果未能解决你的问题,请参考以下文章

调用 Fragment 构造函数导致异常,kotlin?

kotlin:sceondary构造函数中的“未解析的引用”

将接口从片段传递到kotlin中的活动

使用 Kotlin 在片段中引用 RecyclerView 时出现空指针错误

Kotlin :: 双冒号 函数引用

Kotlin学习之路:继承