``` fun main(args: Array<String>) { getP...
# reflect
o
Copy code
fun main(args: Array<String>) {
    getProperty<List<Int>>()
    getProperty<List<String>>()
    getProperty<HashMap<Int, String>>()
}

inline fun <reified T> getProperty(token: Any = object : TypeToken<T> {}) {
    token::class.supertypes.forEach {
        val parameterizedType = it.javaType as ParameterizedType
        parameterizedType.actualTypeArguments.forEach {
            println(it)
        }
    }
}

interface TypeToken<T>
prints
Copy code
java.util.List<? extends java.lang.Integer>
java.util.List<? extends java.lang.String>
java.util.HashMap<java.lang.Integer, java.lang.String>