我有一个类,它有多个子类,每个子类都实现自己的方法。其中一些子类有我需要调用的常用方法。在java中有没有办法知道对象是否有方法(不使用instanceof
)?
答案 0 :(得分:9)
这可能指向设计缺陷,但您可以始终使用反射来检查方法是否存在:
public static boolean hasMethod(Object obj, String methodName) {
return Arrays.stream(obj.getClass().getMethods())
.anyMatch(m -> m.getName().equals(methodName));
}
当然,这可以改进以包括方法的签名,但基本思想保持不变。