Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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_Anonymous Class - Fatal编程技术网

在kotlin中创建匿名类的实例

在kotlin中创建匿名类的实例,kotlin,anonymous-class,Kotlin,Anonymous Class,在C#中,我可以: 或者做一些其他的事情,比如序列化匿名类实例(用于浏览器中的js)。没有使用接口或抽象类,完全匿名类实例 可以在Kotlin中制作相同的东西吗?是的,您可以在Kotlin中制作相同的东西: val a = object { val prop42 = "42" } println("a.prop42 = ${a.prop42}") 已对其进行了描述。另请参见 但这通常不是一个好主意,因为类型没有名称,所以不能在公共声明中使用它,例如该类型

在C#中,我可以:

或者做一些其他的事情,比如序列化匿名类实例(用于浏览器中的js)。没有使用接口或抽象类,完全匿名类实例


可以在Kotlin中制作相同的东西吗?

是的,您可以在Kotlin中制作相同的东西:

val a = object { val prop42 = "42" }
println("a.prop42 = ${a.prop42}")
已对其进行了描述。另请参见


但这通常不是一个好主意,因为类型没有名称,所以不能在公共声明中使用它,例如该类型的类或顶级属性;您也不能创建它的列表或映射。(通常,在本例中,您只能引用它的命名超类-
Any
,因为您没有指定一个超类。)因此它的使用受到一些限制。(缺少名称也会使代码更难理解。)

是的,您可以在Kotlin中执行相同的操作:

val a = object { val prop42 = "42" }
println("a.prop42 = ${a.prop42}")
已对其进行了描述。另请参见


但这通常不是一个好主意,因为类型没有名称,所以不能在公共声明中使用它,例如该类型的类或顶级属性;您也不能创建它的列表或映射。(通常,在本例中,您只能引用它的命名超类-
Any
,因为您没有指定超类。)因此它的使用有点受限。(缺少名称也使代码更难理解。)

这是否回答了您的问题在这个特殊的例子中,似乎您可以使用一个Map对象和一个稍微不同的语法。所以,这个对象必须只有在接口中定义的字段。但我想创建我想要的属性,我不想在这里创建接口。在C#中,我可以在匿名类中定义任何属性。我知道我可以使用Map。但当我从映射中获取数据时,编译器不会检查类型和键名。所以,现在在Kotlin中是不可能的,对吗?为什么你认为“它必须只有在接口中定义的字段”?您可以在Kotlin中的任何匿名类中定义属性和方法,似乎我写得不完全正确。是的,我可以定义其他字段。但我需要“实现”一些接口。是否可以在没有任何接口的情况下实例化实例?比如C#中的例子?这是否回答了您的问题在这个特殊的例子中,似乎您可以使用一个Map对象和一个稍微不同的语法。所以,这个对象必须只有在接口中定义的字段。但我想创建我想要的属性,我不想在这里创建接口。在C#中,我可以在匿名类中定义任何属性。我知道我可以使用Map。但当我从映射中获取数据时,编译器不会检查类型和键名。所以,现在在Kotlin中是不可能的,对吗?为什么你认为“它必须只有在接口中定义的字段”?您可以在Kotlin中的任何匿名类中定义属性和方法,似乎我写得不完全正确。是的,我可以定义其他字段。但我需要“实现”一些接口。是否可以在没有任何接口的情况下实例化实例?就像C#中的例子一样?是的,我知道它是非常特殊的用法。是的,我知道它是非常特殊的用法。