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

标签 java

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

这就是我想象的它的工作方式,但这不是 Java 语法。 Type1.class 也不起作用

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

for (Object type : types) {
    if (someObject instanceof type) {
        doSomething();
    }
}

或与 List<Class> 相同或类似的东西

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

最佳答案

来自 Java 文档:

In Java instances of the Class class represent classes and interfaces in a running Java application.

你可以使用 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
    }
}

关于java - 检查某个对象是否是列表中某个类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723284/

相关文章:

java - 通过java运行linux命令。

java - Apache Spark with Java,从 Oracle 中的 Varchar2 转换为日期类型失败

java - 正则表达式删除两个字符串之间的子字符串

java - 如何在 JOptionPane 的确定按钮上添加监听器?

java - 在遍历整个文件后,是否可以将扫描仪重置为文本的第一行?

java - ForEach 循环中断和连接线程

java - 配置 Play Framework 日志文件在生产中的位置

java - 使用 LWJGL 移动和旋转顶点

java - ClassCastException InjectedDataSourceConnectionProvider Spring 3.1.0、Hibernate 4、JPA EntityManagerFactory

java - 线程的意外行为