Giả sử tôi có một ComponentBase
lớp học, là con ObjectContextDecorator
và cháu của 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) {
//...
}
}
Các set
phương pháp trên ObjectContextDecorator
và ObjectContext
rất simillar. Xem xét mã mẫu này:
ComponentBase base = new ComponentBase();
base.set(""OTM4E_EFFLEVEL"", ""IE1 / STD"", true);
Chữ ký của cả hai phương thức phù hợp với chữ ký được gọi chính xác. Tôi không thể thay đổi chữ ký của phương thức vì đó không phải là mã của tôi.
Làm thế nào để trình biên dịch biết phương pháp nào tôi dự định gọi?
Tôi biết rằng trên IDE bạn có thể chỉ ra phương thức nào bạn thực sự có ý định gọi, nhưng trong tình huống này, tôi đang sử dụng trình nạp lớp để tải một lớp có phương thức chứa mã mẫu.
"this"
)
String, String, boolean
. Phương pháp cụ thể nhất sẽ được gọi. Đây là tất cả trong JLS.