java - 如何检查变量是否为 "class"引用

标签 java

如何检查给定变量是否为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/

相关文章:

java - 日期选择器和时间选择器 - 设置最大值和最小值

java - 使用 Apache Spark 进行嵌套迭代?

java - Struts普通JSP多种形式

javascript - 具有 AES 默认 key 扩展的 Crypto.JS - 在 Java 中解密

java - 数据导入期间超出 Fuseki GC 开销限制

java - 增强的消息格式?

java - 比较 hibernate 条件中的浮点值

java - 打开 Java FileOutputStream 是否高效?

java - hibernate 更新查询中的值未更新

java - 模糊快速字符串匹配和索引算法