因此,我想要一个类型列表,然后遍历该列表并检查对象是否是该列表中类型的实例。
这就是我想像的那样,但是那不是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>或类似的东西
这显然行不通,但是我不知道什么是最好的方法。当然,我可以对要检查的每个对象进行硬编码,但这似乎并不那么优雅。
从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)