2012-07-17 153 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())); 
} 
相关问题