检查某个对象是否是列表中某个类的实例

x70*_*041 2 java

因此,我想要一个类型列表,然后遍历该列表并检查对象是否是该列表中类型的实例。

这就是我想像的那样,但是那不是Java语法。Type1.class也不起作用

List<Object> types = new ArrayList();
types.add(Type1);
types.add(Type2);

for (Object type : types) {
    if (someObject instanceof type) {
        doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者用同样的事情List<Class>或类似的东西

这显然行不通,但是我不知道什么是最好的方法。当然,我可以对要检查的每个对象进行硬编码,但这似乎并不那么优雅。

mic*_*alk 5

从Java文档:

在Java中,Class类的实例表示正在运行的Java应用程序中的类和接口。

您可以使用Class::isInstance方法确定对象是否为给定类型的实例,然后基于此评估应用处理:

List<Class<?>> types = new ArrayList<>();
types.add(String.class);
types.add(Integer.class);

String someObject = "someString";

for (Class<?> type : types) {
    if (type.isInstance(someObject)) {
         // do smoething
    }
}
Run Code Online (Sandbox Code Playgroud)