kotlin能在类init时定义动态方法吗?

我的课:

class Demo { init { // define method here my some array:[a,b,c] // such as fun Demo.a,Demo.b... } } 

函数名称是动态的。

Kotlin能做到这一点吗?

不,你不能在类中动态地定义函数,但是因为函数也是对象,你可以动态地存储它们(在一个字段,数组,地图中)并动态地调用它们。 使用Kotlin的一些语言特性,我们可以得到一个相当简洁的语法:

 class Demo(name: String) { private val functions: Map<String, () -> Any> = mapOf(name to { "Hello $name" }) operator fun get(name: String): Any? = functions[name]?.invoke() } fun main(args: Array<String>) { val demo = Demo("Kirill") println(demo["Kirill"]) } 

输出:

基里尔你好

不,Kotlin是一个静态类型的语言。 这意味着每个变量和方法的类型必须在编译时被知道。