Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit cd8c667

Browse files
committed
同じもしくはサブクラスの判定を外出ししてlazy宣言を削除
1 parent 413e4b8 commit cd8c667

File tree

1 file changed

+6
-6
lines changed
  • src/main/kotlin/com/wrongwrong/mapk/core

1 file changed

+6
-6
lines changed

src/main/kotlin/com/wrongwrong/mapk/core/KMapper.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,15 @@ internal fun <T : Any> getTarget(clazz: KClass<T>): KFunctionForCall<T> {
149149

150150
private fun <T : Any, R : Any> mapObject(param: ParameterForMap<R>, value: T): Any? {
151151
val valueClazz: KClass<*> = value::class
152-
val creator: KFunction<*>? by lazy {
153-
param.getCreator(valueClazz)
154-
}
152+
153+
// パラメータに対してvalueが代入可能(同じもしくは親クラス)であればそのまま用いる
154+
if (param.clazz.isSuperclassOf(valueClazz)) return value
155+
156+
val creator: KFunction<*>? = param.getCreator(valueClazz)
155157

156158
return when {
157-
// パラメータに対してvalueが代入可能(同じもしくは親クラス)であればそのまま用いる
158-
param.clazz.isSuperclassOf(valueClazz) -> value
159159
// creatorに一致する組み合わせが有れば設定されていればそれを使う
160-
creator != null -> creator!!.call(value)
160+
creator != null -> creator.call(value)
161161
// 要求された値がenumかつ元が文字列ならenum mapperでマップ
162162
param.javaClazz.isEnum && value is String -> EnumMapper.getEnum(param.clazz.java, value)
163163
// 要求されているパラメータがStringならtoStringする

0 commit comments

Comments
 (0)