2013-03-13 64 views
3

這種情況是我將一個對象作爲參數傳遞給一個方法,並且我想根據該方法中該對象的類型執行操作。有什麼方法可以知道對象的類型?

示例代碼:

method(Object object){ 

//if object== String type print string 
} 
+0

如果您想檢查手頭的對象類型,可以使用「instanceOf」關鍵字。 – 2013-03-13 05:20:49

回答

4

嘗試

if (object.getClass().getName().equals("Class1Name")) 
    //do something. 

getClass代替instanceof的好處是,你不需要知道在編譯時類的類型。

+0

酷,所以你可以做一個方法,使對象和類名字符串具有更大的靈活性! – npace 2013-03-13 13:45:45

6

使用的instanceof關鍵字。 java編程語言中的關鍵字instanceOf是一個布爾運算符,用於測試對象是否爲指定類型並相應返回值。

if(object instanceof String) { 

} 
+0

謝謝,我曾嘗試過這種方法,但在我的情況下,會發生很多比較,我喜歡避免它。我的意思是,如果我有20個對象類型,那麼我必須檢查所有這些。任何其他方式直接知道傳入對象的類型。 – Abx 2013-03-13 04:59:26

0

使用instanceof運算符來檢查的種類和投適當

0

可以使用instanceof關鍵字。但是,要預先警告;這通常不是一個好的做法,除非你絕對不確定你會通過什麼樣的Object

0

好的做法是使用多態..

如果您具有代表其childType這是一個屬性父類,

class Parent { string type; public string getType() { return type; } } 

class ChildA extends Parent { ChildA() { type = "ChildA"; } 

class ChildB extends Parent { ChildB() { type = "ChildB"; } 

public void function (Parent p) 
{ 
    if (p.getType() == "ChildA") 
    { 
     // A 
    } 
    else if (p.getType == "ChildB") 
    { 
     // B 
    } 
} 
0

如果你打算打印一些東西,你可以使用toString()方法,該方法將覆蓋每個不同類型的對象;)

只是使用類似的代碼波紋管,讓每個類都有不同的toString()方法:

method(Object object){ 
    // ... object.toString(); 
} 
1

如果你想method根據參數來產生不同的反應,你應該重載它

public void method(String s) { 
} 

public void method(Integer i) { 

} 

public void method(SomeClass o) { 

} 
0

我認爲你可以使用getclass()方法。

相關問題