2016-02-29 86 views
0

檢查對象是否是類的實例更好?更好的方法來檢查對象是否是Java中類的實例

object instanceof class 

object == class.instance 

是它更好地使用第一選擇,我需要導入類到另一個類檢查的對象是類的實例,或者如果它等於檢查到類中初始化的類的對象?

我目前正在使用instanceof方法,但我不確定是否最好使用它或者其他解決方案。

+0

你實際上並不想寫字符串文字,對吧? –

+0

我不明白第二個例子。你的意思是寫一些像'object.getClass()== SomeClass.class'? – radoh

+2

目前還不清楚第二起案件的實際含義。如果你想檢查一個對象是否是*類的*實例,'object instanceof AClass'顯然是做這件事的方法。 –

回答

3

obj instanceof MyClass通常是優選的方式,除非它必須MyClass一個MyClass而不是一個子類,在這種情況下obj.getClass() == MyClass.class是使用檢查。

obj == class.instance沒有意義。
obj == new MyClass()總是會返回false,也沒有意義。
obj == otherObj是對象實例的身份檢查,對於檢查它們是否是同一個類是沒有意義的,因爲不相等的對象可能仍然是同一類。

+0

謝謝explainig,通過「obj == class.instance」我的意思是class.instance是一個對象,它是該類的一個實例(該類中的一個對象已經在該類中定義) – Warix3

0

兩個選項不一樣。讓我解釋一下

第一個問題是檢查給定實例'object'的類型是'class'(還是'class'的子類型)。例如

class A {} 

class B extends A {} 

Object b = new B(); 

if(b instanceof A){ 
//will be true 
} 

第二個選項甚至不是有效的。

使用'instanceof'是查找對象是否爲特定類型的實例的首選方法。