@@ -4,7 +4,7 @@ import java.util.Objects
44import kotlin.reflect.KParameter
55
66class ArgumentBucket internal constructor(
7- private val keyArray : Array <KParameter ? >,
7+ private val keyList : List <KParameter >,
88 internal val valueArray : Array <Any ?>,
99 private val isRequireNonNull : List <Boolean >,
1010 private val initializationStatusManager : InitializationStatusManager
@@ -22,8 +22,7 @@ class ArgumentBucket internal constructor(
2222 override val size: Int get() = count
2323
2424 override fun containsKey (key : KParameter ): Boolean {
25- // NOTE: もしかしたらステータスを見た方が速いかも
26- return keyArray[key.index] != null
25+ return initializationStatusManager.isInitialized(key.index)
2726 }
2827
2928 override fun containsValue (value : Any? ): Boolean = valueArray.any { Objects .equals(value, it) }
@@ -36,9 +35,12 @@ class ArgumentBucket internal constructor(
3635 override fun isEmpty (): Boolean = count == 0
3736
3837 override val entries: Set <Map .Entry <KParameter , Any ?>>
39- get() = keyArray.mapNotNull { it?.let { Entry (it, valueArray[it.index]) } }.toSet()
38+ get() = keyList
39+ .filter { initializationStatusManager.isInitialized(it.index) }
40+ .map { Entry (it, valueArray[it.index]) }
41+ .toSet()
4042 override val keys: Set <KParameter >
41- get() = keyArray.filterNotNull() .toSet()
43+ get() = keyList.filter { initializationStatusManager.isInitialized(it.index) } .toSet()
4244 override val values: Collection <Any ?>
4345 get() = valueArray.filterIndexed { i, _ -> initializationStatusManager.isInitialized(i) }
4446
@@ -53,7 +55,6 @@ class ArgumentBucket internal constructor(
5355
5456 count + = 1
5557 initializationStatusManager.put(index)
56- keyArray[index] = key
5758 valueArray[index] = value
5859
5960 return
0 commit comments