Java 如何检查变量是否为“a”;“类”;参考

Java 如何检查变量是否为“a”;“类”;参考,java,Java,如何检查给定变量是否为类(通用类型)?我真的不知道如何更好地问这个问题,但是让我们来考虑这个代码: 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] instanceo

如何检查给定变量是否为
(通用类型)?我真的不知道如何更好地问这个问题,但是让我们来考虑这个代码:

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 ...
}
Object[]o=new Object[]{“string”,12,MyClass.class,new MyClass()};
for(int i=0;i
如何检查
o
数组第三个元素的类型

else if (o[i] instanceof Class) ...
与检查它是否为
整数
字符串
的方法完全相同。如果要使用泛型类型参数,它必须是
通配符:

else if (o[i] instanceof Class<?>) ...
else如果(类的o[i]实例)。。。

因为泛型信息在运行时会被删除,而且您似乎并不想测试它是否是一个特定的类。

使用
instanceof
测试它是否是一个类(任何类型):

使用
==
测试它是否为特定类:

if (o[i] == MyClass.class)
类文本实际上是静态常量,因此每个JVM中只有一个类文本



注意:如果有多个类加载器在起作用,那么
=
的测试可能为假,即使如果两个实例是使用不同的类加载器加载的,“应该”为真。在这种情况下,即使是
o[i].equals(MyClass.class)
也将是false。

使用
操作符instanceOf
像下面一样使用

o[i] instanceof Class

MyClass.class是class类型的文本,所以class的实例应该可以。

你试过(o[i]instanceof class)吗?嗯,可能是
o[i].getClass().equals(MyClass.class)
?@A4L我需要知道它是否是任何类。我介意你为什么要从这样的数组开始,除非纯粹是好奇。谢谢大家,我只是错过了这一点,事实上,
。class
只是一个类实例。我将在几分钟内接受答复。
o[i] instanceof Class