假设我在Java中有一个类值数组,我想遍历数组以找到Double所在的位置。 我尝试了以下方法:
public class ClassTypes {
public static void main(String[] args) {
Class []types = {String.class, Double.class};
for (int i = 0 ; i < types.length; i++)
{
if (types[i].isInstance(Double.class)){
System.out.println("DOUBLE"); //never printed
}
}
}}
我没有对象的实例,所以我不能使用instanceof,我想避免在类对象上使用getName来执行比较。 谁能建议我怎么做?
答案 0 :(得分:3)
types[i].equals(Double.class)
?
答案 1 :(得分:1)
您实际需要的是Double.class.isAssignableFrom(types[i])
,而不是equals
而不是==(它们与Class相同)。对于像Double和String这样的最终类,当然没关系。
如果您已尝试检查该类是否为java.lang.Number
(或任何接口/抽象类),则 == 方法将失败。