Implemented equals(), hashCode(), toString() for K*Property<>
This commit is contained in:
@@ -17,6 +17,19 @@ open class KProperty0Impl<out R>(override val name: String, val getter: () -> R)
|
||||
return getter()
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KProperty0Impl<R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return name.hashCode() * 31 + getter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
@FixmeReflection
|
||||
@@ -27,6 +40,20 @@ open class KProperty1Impl<T, out R>(override val name: String, val getter: (T) -
|
||||
override fun invoke(receiver: T): R {
|
||||
return getter(receiver)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KProperty1Impl<T, R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return name.hashCode() * 31 + getter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
@FixmeReflection
|
||||
@@ -37,6 +64,20 @@ open class KProperty2Impl<T1, T2, out R>(override val name: String, val getter:
|
||||
override fun invoke(receiver1: T1, receiver2: T2): R {
|
||||
return getter(receiver1, receiver2)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KProperty2Impl<T1, T2, R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return name.hashCode() * 31 + getter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
@FixmeReflection
|
||||
@@ -45,6 +86,20 @@ class KMutableProperty0Impl<R>(name: String, getter: () -> R, val setter: (R) ->
|
||||
override fun set(value: R): Unit {
|
||||
setter(value)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KMutableProperty0Impl<R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter && setter == otherKProperty.setter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return (name.hashCode() * 31 + getter.hashCode()) * 31 + setter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
@FixmeReflection
|
||||
@@ -53,6 +108,20 @@ class KMutableProperty1Impl<T, R>(name: String, getter: (T) -> R, val setter: (T
|
||||
override fun set(receiver: T, value: R): Unit {
|
||||
setter(receiver, value)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KMutableProperty1Impl<T, R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter && setter == otherKProperty.setter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return (name.hashCode() * 31 + getter.hashCode()) * 31 + setter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
@FixmeReflection
|
||||
@@ -61,6 +130,20 @@ class KMutableProperty2Impl<T1, T2, R>(name: String, getter: (T1, T2) -> R, val
|
||||
override fun set(receiver1: T1, receiver2: T2, value: R): Unit {
|
||||
setter(receiver1, receiver2, value)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
val otherKProperty = other as? KMutableProperty2Impl<T1, T2, R>
|
||||
if (otherKProperty == null) return false
|
||||
return name == otherKProperty.name && getter == otherKProperty.getter && setter == otherKProperty.setter
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return (name.hashCode() * 31 + getter.hashCode()) * 31 + setter.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
open class KLocalDelegatedPropertyImpl<out R>(override val name: String): KProperty0<R> {
|
||||
@@ -70,10 +153,18 @@ open class KLocalDelegatedPropertyImpl<out R>(override val name: String): KPrope
|
||||
override fun invoke(): R {
|
||||
throw UnsupportedOperationException("Not supported for local property reference.")
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
|
||||
class KLocalDelegatedMutablePropertyImpl<R>(name: String): KLocalDelegatedPropertyImpl<R>(name), KMutableProperty0<R> {
|
||||
override fun set(value: R): Unit {
|
||||
throw UnsupportedOperationException("Not supported for local property reference.")
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "property $name (Kotlin reflection is not available)"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user