import kotlin.test.assertEquals import kotlin.reflect.KProperty class Project { fun getInstance(cls: Class): T = when (cls.getName()) { "java.lang.Integer" -> 1 as T "java.lang.String" -> "OK" as T else -> null!! } } inline operator fun Project.getValue(t: Any?, p: KProperty<*>): T = getInstance(T::class.java) val project = Project() val x1: Int by project val x2: String by project fun box(): String { assertEquals(1, x1) assertEquals("OK", x2) return "OK" }