java - 有没有办法在 Java 运行时检查对象是否具有特定方法?

标签 java rtti

我有一个类,它有多个子类,每个子类都实现自己的方法。其中一些子类具有我需要调用的通用方法。 java中有没有办法知道对象是否有方法(不使用instanceof)?

最佳答案

这可能表明存在设计缺陷,但您始终可以使用反射来检查方法是否存在:

public static boolean hasMethod(Object obj, String methodName) {
    return Arrays.stream(obj.getClass().getMethods())
                 .anyMatch(m -> m.getName().equals(methodName));
}

当然,这也可以进行改进以包含方法的签名,但基本思想保持不变。

关于java - 有没有办法在 Java 运行时检查对象是否具有特定方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37735523/

相关文章:

java - 如何将 ArrayList<String> 添加到 JSON 数组 - 牢记类型安全

java - 如何避免连字符拆分正则表达式?

delphi - 对于静态数组,使用 RTTI 获取记录字段类型失败

Delphi:调用构造函数引发 EInvalidCast

Delphi:防止方法名称出现在可执行文件中

java - 为什么 ExtractMpegFramesTest 不适用于旋转的输入文件?

java - JPA 2.1、Hibernate 4.3、Spring 4.0 数据未保存到数据库

java - Swing:设置JFrame内容区域大小

c++ - 在运行时从指向基类的指针获取对象的类型

delphi - 是否可以使用 RTTI 获取接口(interface)上 GUID 的值?