如果对象具有特定方法,是否有办法检查Java运行时?

时间:2016-06-09 20:26:57

标签: java rtti

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

1 个答案:

答案 0 :(得分:9)

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

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

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

相关问题