I've got an interface Vehicle
with implementations Car
, Motorcycle
, Skateboard
, etc.
I would like to create a Map
that contains attributes or data values for each implementation. A very simple one would look like:
val vehicleInfo : Map<KClass<Vehicle>, Map<String, String>> mapOf(
Car::class to mapOf("wheels" to "4", "license_required" to "true"),
Motorcycle::class to mapOf("wheels" to "2", "license_required" to "true"),
Skateboard::class to mapOf("wheels" to "4", "license_required" to "false"),
)
but this won't compile due to Type Mismatch
(between the KClass
keys and KClass<Vehicle>
)
(a similar possibility would be to use a data class for the map values: data class(val wheels : Int, val license_required : Boolean)
)
Is there a way to create a Map with classes as the keys? Alternatively, is there a better pattern for creating a 1-1 mapping between classes and attributes (I don't want to say "properties" because, obviously, I could define these as properties in the interface and provide values in each class definition -- I specifically do NOT want to do that, I want to keep all the attributes together in its own Map or maybe some other data structure)... it seems like some functional programming concept or higher-order function might be applicable here. Thank you.
Aucun commentaire:
Enregistrer un commentaire