Vì vậy, tôi có giao diện nàyLoại Erasure xé đầu xấu xí của nó, làm thế nào để vượt qua?
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
và tôi muốn lấy được lớp cho nó có thể xử lý các sự kiện, như vậy:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
Ví dụ ở trên hoạt động tốt. Nhưng trình biên dịch sẽ không cho phép tôi thực hiện EventHandler nhiều lần, do Loại bỏ khó chịu cực kỳ bực bội.
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
Một số câu hỏi ...
- Tại sao Java không cho phép Loại Erasure? IIRC nó là cái gì để làm với việc tương thích với các phiên bản trước của Java, đúng không?
EDIT: Ý tôi là tại sao Java có Loại Erasure (đã có nó theo cách khác xung quanh)
Có bất kỳ loại "mod"/"mở rộng" (vì thiếu một từ tốt hơn) hoặc các ngôn ngữ lập trình cho phép tôi có được xung quanh Loại Erasure? Vì tôi không sử dụng các phiên bản Java cũ hơn nên tôi không quan tâm đến mã của mình đang tương thích với mã cũ hơn.
Có cách giải quyết nào không, trong ngôn ngữ Java, mà tôi có thể sử dụng để xử lý Loại xóa?
Nếu không, một số cách thay thế để mã xử lý sự kiện trong chương trình của tôi giúp trình biên dịch hài lòng là gì?
-- không có ý nghĩa. Java không cho phép xóa bỏ loại - thực tế nó thực hiện xóa bỏ kiểu. – emory
"Có bất kỳ loại" mod "/" tiện ích mở rộng "nào (vì thiếu từ tốt hơn) hoặc ngôn ngữ lập trình cho phép tôi sử dụng Loại xóa không?" - Có, nhiều ngôn ngữ không có loại tẩy xoá. – emory
Bạn đang tìm kiếm C# –