2012-07-17 150 views
1

我試着做以下,但它不會編譯並一直說「博}這種T」是不相容如何檢查一個對象是否爲類c的類型?

public retur boolean (BaseObject bo,String text, Class<?> T){ 
    return (bo.getText().equals(text) && bo instanceOf T) 

} 

我想,以確保得到的是相同的,微博必須是類型T.

哦是的我如何確保「T」擴展BaseObject?

+0

如果'T'擴展了'BaseObject',那麼'BaseObject'不能是'T'的實例。 – Tharwen 2012-07-17 11:39:36

+0

不要將兩個問題發佈到一個問題中。將第二個問題編輯到另一個帖子中。 – millimoose 2012-07-17 11:39:51

+0

@Tharwen除非'T'是'BaseObject'。 (如果按照Java的通用約束使用的「擴展」的含義,即「可分配給」)。 – millimoose 2012-07-17 11:41:03

回答

4
T.isAssignableFrom(bo.getClass()); 

有關詳細信息,請參見the javadoc

+0

類型必須相同。我擔心如果bo是類 T的孩子,它將返回true ..我應該使用T.instanceOf(bo.getClass());代替? – seesee 2012-07-17 11:58:15

+0

然後比較類:'bo.getClass()== T'。但是這與'instanceof'不同。 – 2012-07-17 12:19:46

0
public boolean test(BaseObject bo,String text, Class<? extends BaseObject> clazz){ 
    return (bo.getText().equals(text) && clazz.isAssignableFrom(bo.getClass())); 
} 
相關問題