I'm trying to return a property/value from Data class by checking type parameter
Data Class :
data class SystemConfiguration(
    val systemName: String,
    val fields: List<String>
)
Abstract class :
abstract class ConfigurationLoader<out T> {
    abstract val clazz: Class<out T>
    private fun getAssociateAttribute(file: T): String{
        return when(clazz){
            SystemConfiguration::class.java -> file.systemName // Line causing error
            // If its another Data class, I should return value from that data class
            else -> ""
        }
    }
    open fun loadConfigurations(): Map<String, T>{
        val map = Paths.get(configurationFolderPath, filePath).toFile().walkTopDown().filter { it.isFile }.map {
            val x = ionSystem.loader.load(it)[0]
            ionValueMapper.readValue<List<T>>(x.toString())
        }.flatten().associateBy { getAssociateAttribute(it) }
    }
}
inline fun <reified T: Any> javaClasstype(): Class<T> {
    return T::class.java
}
Sub class
class ServiceConfigurationLoader (
    override val clazz: Class<SystemConfiguration> = javaClasstype()
): ConfigurationLoader<SystemConfiguration>()
I'm getting an exception "e: Unresolved reference: systemName". Not able to access values inside data class while we use type parameter
If i use like this(directly mentioning data class name), I'm able to access the values
private fun getAssociateAttribute(file: SystemConfiguration): String{
        return when(clazz){
            SystemConfiguration::class.java -> file.systemName
            else -> ""
        }
    }
Could someone help me out here to access the value using Type paramater in Kotlin?
Thanks in Advance !!
I have tried using reified keyword as well. Still getting the same issue. I'm expecting to access the value using Type paramater