Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin中通过委托实现对象_Kotlin - Fatal编程技术网

在Kotlin中通过委托实现对象

在Kotlin中通过委托实现对象,kotlin,Kotlin,通过委托实现类是可能的 class Envs( val map: Map<String, String> = to_map() ) : Map<String, String> by map 正如注释中所解释的,对象不能接受参数,因为它们是静态初始化的(在java的静态块中) 对于更新后的问题,不可能指向未在主构造函数中声明的变量。课程也是如此: class-Envs:Map by-Map{ val map:map=to_map() } ^上面的代码不会编译,因为在

通过委托实现类是可能的

class Envs(
  val map: Map<String, String> = to_map()
) : Map<String, String> by map

正如注释中所解释的,
对象
不能接受参数,因为它们是静态初始化的(在java的静态块中)

对于更新后的问题,不可能指向未在主构造函数中声明的变量。课程也是如此:

class-Envs:Map by-Map{
val map:map=to_map()
}
^上面的代码不会编译,因为在委派时无法访问map变量。它仅对其中声明的方法可用

你可以用它做你想做的事:

object Envs:Map by to_Map()
或者,如果您想拥有贴图的引用,但由于对象是贴图本身,因此您不能保留其引用

object Envs:Map by to_Map(){
val-map:map=this
}

但是它(^)有点无用,您可以使用
this
Envs
来访问映射。

正如注释中所解释的,
对象
不能接受参数,因为它们是静态初始化的(在java的静态块中)

对于更新后的问题,不可能指向未在主构造函数中声明的变量。课程也是如此:

class-Envs:Map by-Map{
val map:map=to_map()
}
^上面的代码不会编译,因为在委派时无法访问map变量。它仅对其中声明的方法可用

你可以用它做你想做的事:

object Envs:Map by to_Map()
或者,如果您想拥有贴图的引用,但由于对象是贴图本身,因此您不能保留其引用

object Envs:Map by to_Map(){
val-map:map=this
}

但是它(^)有点没用,你可以用
this
Envs
来访问地图。

对象不应该使用参数,它们的初始化更像是静态的(实际上不是静态的,而是像它一样)。你可以做更多的事情,比如
object Envs:Map by to_Map()
错误消息与委派无关:“对象不允许使用构造函数”@Moira my bad,我发布了稍有错误的代码,请查看更新的问题。
object
不应该接受参数,它们初始化更像是静态的(实际上不是静态的,但喜欢它)。你可以做更多的事情,比如
object Envs:Map by to_Map()
错误消息与委托无关:“对象不允许使用构造函数”@Moira my bad,我发布了稍微错误的代码,请查看更新的问题。
object Envs : Map<String, String> by map {
  val map: Map<String, String> = to_map()
}