class A(val n: Int?, val s: String) { val f: Float? = null fun foo() { } override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false other as A if (n != other.n) return false if (s != other.s) return false if (f != other.f) return false return true } override fun hashCode(): Int { var result = n ?: 0 result = 31 * result + s.hashCode() result = 31 * result + (f?.hashCode() ?: 0) return result } }