I need to use configuration objects in my code. I have a typealias as follows:
typealias MyParam = Triple<String, Any, Type>
I then have a list of these which is populated at runtime:
val paramsList: MutableList<MyParam> = mutableListOf();
Now when I try and populate the list, I get an error:
paramsList.add(Triple("Strength", 0, Float))
It says "Type mismatch: required Type. Found Float.companion".
How can I get around this error? I will eventually need to cast a value using this Type.
>Solution :
You can use ::class to refer to Kotlin’s KClass and use the .java property to get Java’s Class out of it (which implements Type):
paramsList.add(Triple("Strength", 0, Float::class.java))
For more complex types with generics like List<Float>, use typeOf<List<Float>>() which gives you the KType corresponding to List<Float>, and then javaType to get a Type out of it:
import kotlin.reflect.typeOf
import kotlin.reflect.javaType
paramsList.add(Triple("Strength", 0, typeOf<List<Float>>().javaType))
