Vì vậy, tôi đã hỏi câu hỏi này trước đây nhưng tôi đã có một sai lầm trong mã mà hầu hết mọi người chọn lên, chứ không phải là vấn đề chính nó.Java: thay thế một phân lớp/subtype của một tham số khi vượt qua một phương thức?
Dù sao, tôi đang cố gắng ghi đè phương thức giao diện trong một lớp. Tuy nhiên, tôi muốn kiểu tham số trong phương thức ghi đè là một lớp con của kiểu tham số như được định nghĩa trong phương thức overriden.
Giao diện:
public interface Observer {
public void update(ComponentUpdateEvent updateEvent) throws Exception;
}
Trong khi lớp đó sẽ ghi đè phương pháp này là:
public class ConsoleDrawer extends Drawer {
//...
@Override
public void update(ConsoleUpdateEvent updateEvent) throws Exception {
if (this.componentType != updateEvent.getComponentType()) {
throw new Exception("ComponentType Mismatch.");
}
else {
messages = updateEvent.getComponentState();
}
}
//...
}
ConsoleUpdateEvent là một lớp con của ComponentUpdateEvent.
Bây giờ, tôi chỉ có thể có phương thức update() trong ConsoleDrawer lấy ComponentUpdateEvent làm tham số và sau đó truyền nó vào một ConsoleUpdateEvent nhưng tôi đang tìm một giải pháp gọn nhẹ hơn nếu có thể. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn bạn.
Tôi không tin điều này là có thể vì nó đi ngược lại nguyên tắc của một giao diện (tức là các lớp thực hiện giao diện sẽ khớp hoàn toàn với tất cả các chữ ký phương thức được chỉ định bởi giao diện). Tuy nhiên, tôi sẽ xem câu hỏi này vì tôi rất quan tâm để xem liệu có người nào khác sẽ chứng minh tôi sai hay không. – DGH