如何检查给定变量是否为Class
(通用类型)?我真的不知道如何更好地提出问题,但让我们考虑一下这段代码:
Object[] o = new Object[] { "string", 12, MyClass.class, new MyClass() };
for (int i = 0; i < o.length; i++) {
if (o[i] instanceof String) ... // TRUE for [0]
else if (o[i] instanceof Integer) ... // TRUE for [1]
else if (o[i] instanceof ???) ... // TRUE for [2] ???
else if (o[i] instanceof MyClass) ... // TRUE for [3]
else ...
}
如何检查 o
数组的第三个元素的类型?
最佳答案
使用 instanceof
测试它是否是一个类(任何类型):
if (o[i] instanceof Class)
使用==
来测试它是否是一个特定的类:
if (o[i] == MyClass.class)
类文字实际上是静态常量,因此每个 JVM 中的每个类文字只有一个。
<小时/>注意:如果有多个类加载器在运行,那么 ==
的测试可能为 false,即使如果两个实例是使用不同的类加载器加载的,它“应该”为 true。在这种情况下,即使 o[i].equals(MyClass.class)
也将是 false。
关于java - 如何检查变量是否为 "class"引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21572765/