Supongamos que tengo una ComponentBaseclase, de quien es hijo ObjectContextDecoratory nieto ObjectContext.
public class ComponentBase extends ObjectContextDecorator {
}
public class ObjectContextDecorator extends ObjectContext {
public void set(String objectTypePath, String characteristicName, Object value) {
//...
}
}
public class ObjectContext {
public void set(String characteristicName, Object value, boolean forced) {
//...
}
}
Los setmétodos en ObjectContextDecoratory ObjectContextson muy similares. Considere este código de muestra:
ComponentBase base = new ComponentBase();
base.set(""OTM4E_EFFLEVEL"", ""IE1 / STD"", true);
Las firmas de ambos métodos se ajustan a la que se llama correctamente. No puedo cambiar las firmas de los métodos ya que no es mi código.
¿Cómo sabe el compilador a qué método pretendía llamar?
Sé que en el IDE puedes señalar a qué método realmente quieres llamar, pero en esta situación, estoy usando un cargador de clases para cargar una clase que tiene un método que contiene el código de muestra.
"this")
String, String, boolean. Se llamará al método más específico. Todo esto está en el JLS.