【发布时间】:2019-05-13 15:08:03
【问题描述】:
我正在尝试根据参数类型重载我的方法:
private String getMessage(final FieldError fieldError) {
return String.format("%s %s", fieldError.getField(), fieldError.getDefaultMessage());
}
private String getMessage(final ObjectError objectError) {
return objectError.getDefaultMessage();
}
现在,如果我有一个List<ObjectError> 并为该List 的元素调用上述方法,无论List 上的元素是哪种类型(ObjectError 或FieldError),
getMessage(final ObjectError objectError) 将始终被调用。
List<ObjectError> errors;
getMessage(errors.get(0));
为什么会这样?如果它只是它的工作原理,有没有机会不使用if's 和instanceof's?
【问题讨论】:
标签: java polymorphism overloading