Làm cách nào để biết hai đối tượng của lớp bên trong có cùng loại thời gian chạy không? Trong ví dụ dưới đây, tôi mong đợi để xem lớp aa.getClass == a.Inner và ba.getClass == b.Inner, nhưng trên thực tế chúng là cả hai Outer.Inner và bằng nhau.scala: so sánh các loại đối tượng lớp bên trong
class Outer{
class Inner{}
}
val a = new Outer
val b = new Outer
val aa = new a.Inner
val ab = new a.Inner
val ba = new b.Inner
val res1 = aa.getClass == ba.getClass
val res2 = aa.isInstanceOf[ab.type ]
scala> | | defined class Outer
scala> a: Outer = [email protected]
scala> b: Outer = [email protected]
scala> aa: a.Inner = [email protected]
scala> ab: a.Inner = [email protected]
scala> ba: b.Inner = [email protected]
scala> res1: Boolean = true
scala> res2: Boolean = false
Có thể đáng nói rằng cả hai đều có thể gán cho 'Outer # Inner' –
Cảm ơn! Thật lạ khi chúng ta cần viết một phương thức tùy chỉnh để sử dụng khi so sánh các đối tượng lớp bên trong ... – Yegor
@Yegor Lưu ý rằng bạn * có thể * làm 'ab.isInstanceOf [Outer # Inner]' với hiệu ứng mong muốn. –