Exa*_*Box 2 reflection functional-programming higher-order-functions kotlin
我有一个Vehicle带有实现Car、、等Motorcycle的接口。Skateboard
我想创建一个Map包含每个实现的属性或数据值的。一个非常简单的看起来像:
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"),
)
Run Code Online (Sandbox Code Playgroud)
但这不会编译,因为Type Mismatch(在KClass键 和之间KClass<Vehicle>)
(类似的可能性是使用地图值的数据类data class(val wheels : Int, val license_required : Boolean):)
有没有办法创建一个以类为键的 Map?或者,是否有更好的模式来在类和属性之间创建 1-1 映射(我不想说“属性”,因为显然,我可以将它们定义为接口中的属性,并在每个类定义中提供值 - - 我特别不想这样做,我想将所有属性保留在自己的 Map 或其他数据结构中)...似乎某些函数式编程概念或高阶函数可能适用于此。谢谢。
对 KClass 使用协变类型,以便可以使用 Vehicle 的任何子类型。
val vehicleInfo : Map<KClass<out Vehicle>, Map<String, String>> mapOf(
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |