diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt index b5efc66e..e029af8d 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/KConcreteTypeAdapter.kt @@ -44,8 +44,8 @@ private fun resolveBound(bound: Class, stringAdapter: TypeAdapter } } -private class ListAdapter(private val bound: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { - private val resolvedBound by lazy { resolveBound(bound, stringAdapter) } +private class ListAdapter(private val type: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { + private val resolvedBound by lazy { resolveBound(type, stringAdapter) } override fun write(out: JsonWriter, value: List?) { out.beginArray() @@ -78,9 +78,9 @@ private class ListAdapter(private val bound: Class, private val stringAdap } } -private class MapAdapter(private val boundKey: Class, private val boundValue: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { - private val resolvedKey by lazy { resolveBound(boundKey, stringAdapter) } - private val resolvedValue by lazy { resolveBound(boundValue, stringAdapter) } +private class MapAdapter(private val keyType: Class, private val valueType: Class, private val stringAdapter: TypeAdapter) : TypeAdapter?>() { + private val resolvedKey by lazy { resolveBound(keyType, stringAdapter) } + private val resolvedValue by lazy { resolveBound(valueType, stringAdapter) } override fun write(out: JsonWriter, value: Map?) { out.beginArray() @@ -120,8 +120,8 @@ private class MapAdapter(private val boundKey: Class, private val bound } } -private class StringMapAdapter(private val bound: Class, private val stringAdapter: TypeAdapter, private val interner: Interner) : TypeAdapter?>() { - private val resolvedBound by lazy { resolveBound(bound, stringAdapter) } +private class StringMapAdapter(private val type: Class, private val stringAdapter: TypeAdapter, private val interner: Interner) : TypeAdapter?>() { + private val resolvedBound by lazy { resolveBound(type, stringAdapter) } override fun write(out: JsonWriter, value: Map?) { val resolvedBound = resolvedBound @@ -601,6 +601,14 @@ class KConcreteTypeAdapter private constructor( return this } + fun makeListAdapter(type: Class): TypeAdapter?> { + return ListAdapter(type, internedStringAdapter) + } + + fun makeObjectAdapter(type: Class): TypeAdapter?> { + return StringMapAdapter(type, internedStringAdapter, stringInterner) + } + /** * Добавляет поле, которое содержит список значений V (без null). *