2012-12-07 68 views
1

有沒有一種方法可以基於方法的傳遞參數來使用instanceof?例如以通用的方式使用instanceof

doSomething(myClass.class); /* I would like to call this also with other classes */ 

public void doSomething(/*generic parameter that accepts all classes, not just myClass */) { 
    if (myObject instanceOf /* the generic parameter */ == true) {...} 
} 

有時我會打電話給使用myClass.class但有時我想用someOtherClass.class稱它爲方法 - 我不想雖然改變,如果條件。那可能嗎?如果是這樣,怎麼樣? :)

感謝

回答

6

您正在尋找的Class.isInstance() method

public void doSomething(Class<?> c, Object myObject) { 
    if (c.isInstance(myObject)) {...} 
} 
+0

雖然,從技術上來說,這是改變'if'條件。然而,+1,正是我所建議的。 – Brian

+0

正是我所需要的。非常感謝 – pad

2

這是爲了做到這一點,據我所知:

public static <T> boolean doInstanceOf(Object object,Class<T> clz) { 
     return clz.isInstance(object); 
    } 

用法:

System.out.println(doInstanceOf(myObject,MyClass.class));