檢查對象是否是類的實例更好?更好的方法來檢查對象是否是Java中類的實例
object instanceof class
或
object == class.instance
是它更好地使用第一選擇,我需要導入類到另一個類檢查的對象是類的實例,或者如果它等於檢查到類中初始化的類的對象?
我目前正在使用instanceof
方法,但我不確定是否最好使用它或者其他解決方案。
檢查對象是否是類的實例更好?更好的方法來檢查對象是否是Java中類的實例
object instanceof class
或
object == class.instance
是它更好地使用第一選擇,我需要導入類到另一個類檢查的對象是類的實例,或者如果它等於檢查到類中初始化的類的對象?
我目前正在使用instanceof
方法,但我不確定是否最好使用它或者其他解決方案。
obj instanceof MyClass
通常是優選的方式,除非它必須是的MyClass
一個MyClass
而不是一個子類,在這種情況下obj.getClass() == MyClass.class
是使用檢查。
obj == class.instance
沒有意義。
obj == new MyClass()
總是會返回false
,也沒有意義。
obj == otherObj
是對象實例的身份檢查,對於檢查它們是否是同一個類是沒有意義的,因爲不相等的對象可能仍然是同一類。
謝謝explainig,通過「obj == class.instance」我的意思是class.instance是一個對象,它是該類的一個實例(該類中的一個對象已經在該類中定義) – Warix3
兩個選項不一樣。讓我解釋一下
第一個問題是檢查給定實例'object'的類型是'class'(還是'class'的子類型)。例如
class A {}
class B extends A {}
Object b = new B();
if(b instanceof A){
//will be true
}
第二個選項甚至不是有效的。
使用'instanceof'是查找對象是否爲特定類型的實例的首選方法。
你實際上並不想寫字符串文字,對吧? –
我不明白第二個例子。你的意思是寫一些像'object.getClass()== SomeClass.class'? – radoh
目前還不清楚第二起案件的實際含義。如果你想檢查一個對象是否是*類的*實例,'object instanceof AClass'顯然是做這件事的方法。 –