如果我有兩個目的如下...如何檢查兩個對象是否屬於同一個類?
ClassA classAInstance = ...
ClassB classBInstance = ...
...其中ClassB的是ClassA的直接子類(擴展)和分配給「classAInstance」和「classBInstance」可以是實際對象ClassA,ClassB的實例或ClassA的直接或間接子類...
然後,我該如何檢查分配給'classAInstance'和'classBInstance'的每個對象是否具有相同的Class?下面是正確的...
classAInstance.getClass().equals(classBInstance.getClass());
...或者是我應該比較一些其他屬性?
剛一說明,如果你需要檢查是否ClassB''是** **正是'ClassA'你很可能違反了[Liskov Substitution Principle](http://en.wikipedia.org/wiki/Liskov_Substitution_Principle)或濫用多態性。依賴於一個對象是'ClassA'的代碼不應該關心它是否實際上是'ClassB'。 – 2012-03-12 18:00:13
不,我想檢查分配給'classAInstance'的對象的類是否與分配給'classBInstance'的對象的類相同。問題有意義嗎?該技術是否正確? – 2012-03-12 18:03:03
我認爲這個問題在很大程度上是有道理的,我的觀點是,如果你需要這樣做,你幾乎可以肯定有一個糟糕的設計或類層次結構。有一些有效的用途來檢查確切的類型(例如,在「equals」實現中強制對稱),但它們很少見。 – 2012-03-12 18:03:39