這種情況是我將一個對象作爲參數傳遞給一個方法,並且我想根據該方法中該對象的類型執行操作。有什麼方法可以知道對象的類型?
示例代碼:
method(Object object){
//if object== String type print string
}
這種情況是我將一個對象作爲參數傳遞給一個方法,並且我想根據該方法中該對象的類型執行操作。有什麼方法可以知道對象的類型?
示例代碼:
method(Object object){
//if object== String type print string
}
嘗試
if (object.getClass().getName().equals("Class1Name"))
//do something.
的getClass
代替instanceof
的好處是,你不需要知道在編譯時類的類型。
酷,所以你可以做一個方法,使對象和類名字符串具有更大的靈活性! – npace 2013-03-13 13:45:45
使用的instanceof關鍵字。 java編程語言中的關鍵字instanceOf是一個布爾運算符,用於測試對象是否爲指定類型並相應返回值。
if(object instanceof String) {
}
謝謝,我曾嘗試過這種方法,但在我的情況下,會發生很多比較,我喜歡避免它。我的意思是,如果我有20個對象類型,那麼我必須檢查所有這些。任何其他方式直接知道傳入對象的類型。 – Abx 2013-03-13 04:59:26
使用instanceof運算符來檢查的種類和投適當
可以使用instanceof
關鍵字。但是,要預先警告;這通常不是一個好的做法,除非你絕對不確定你會通過什麼樣的Object
。
好的做法是使用多態..
如果您具有代表其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
}
}
如果你打算打印一些東西,你可以使用toString()方法,該方法將覆蓋每個不同類型的對象;)
只是使用類似的代碼波紋管,讓每個類都有不同的toString()方法:
method(Object object){
// ... object.toString();
}
如果你想method
根據參數來產生不同的反應,你應該重載它
public void method(String s) {
}
public void method(Integer i) {
}
public void method(SomeClass o) {
}
我認爲你可以使用getclass()方法。
如果您想檢查手頭的對象類型,可以使用「instanceOf」關鍵字。 – 2013-03-13 05:20:49