如果一个对象有一个特定的方法,有没有办法检查 Java 运行时?

Is there a way to check in Java runtime if an object has a specific method?

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

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

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

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