我试着做以下,但它不会编译并一直说“博}这种T”是不相容如何检查一个对象是否为类c的类型?
public retur boolean (BaseObject bo,String text, Class<?> T){
return (bo.getText().equals(text) && bo instanceOf T)
}
我想,以确保得到的是相同的,微博必须是类型T.
哦是的我如何确保“T”扩展BaseObject?
我试着做以下,但它不会编译并一直说“博}这种T”是不相容如何检查一个对象是否为类c的类型?
public retur boolean (BaseObject bo,String text, Class<?> T){
return (bo.getText().equals(text) && bo instanceOf T)
}
我想,以确保得到的是相同的,微博必须是类型T.
哦是的我如何确保“T”扩展BaseObject?
T.isAssignableFrom(bo.getClass());
有关详细信息,请参见the javadoc。
类型必须相同。我担心如果bo是类> T的孩子,它将返回true ..我应该使用T.instanceOf(bo.getClass());代替? – seesee 2012-07-17 11:58:15
然后比较类:'bo.getClass()== T'。但是这与'instanceof'不同。 – 2012-07-17 12:19:46
public boolean test(BaseObject bo,String text, Class<? extends BaseObject> clazz){
return (bo.getText().equals(text) && clazz.isAssignableFrom(bo.getClass()));
}
如果'T'扩展了'BaseObject',那么'BaseObject'不能是'T'的实例。 – Tharwen 2012-07-17 11:39:36
不要将两个问题发布到一个问题中。将第二个问题编辑到另一个帖子中。 – millimoose 2012-07-17 11:39:51
@Tharwen除非'T'是'BaseObject'。 (如果按照Java的通用约束使用的“扩展”的含义,即“可分配给”)。 – millimoose 2012-07-17 11:41:03