Tôi đang cố gắng gửi các đối tượng đến phương thức riêng biệt theo phân lớp của chúng.Làm thế nào để gọi một phương thức java dựa trên một loại phân lớp?
Ví dụ, hãy xem xét những 2 đối tượng
class A extends I {}
class B extends I {}
và phương pháp
void dispatch(I i) {}
trong dispatch()
, tôi muốn gọi một phương thức theo kiểu i
. Do đó nếu i
thực sự thuộc loại A, phương thức handlerA(A a)
sẽ được gọi. Nếu đó là loại B, handlerB(B b)
sẽ được gọi, v.v ... Tôi đã thử với quá tải phương thức nhưng tôi đoán nó không hoạt động theo cách này
cách tốt nhất để đạt được điều này là gì? Tôi muốn tránh sử dụng if/else statement ...
Xin cảm ơn trước,
chỉnh sửa: Tôi không thể sửa đổi bất kỳ lớp nào trong số đó.
này giả định rằng 'handler()' làm cho tinh thần để có trên 'A' và 'b'. Nếu đúng như vậy, câu trả lời của bạn chính xác 100%. –
Kevin: Đúng vậy. Nhưng chỉ là loại. Tôi vẫn nghĩ rằng OP là thiếu khái niệm cơ bản của đa hình, và ngay cả khi đề nghị chính xác của tôi là không phù hợp, tôi nghĩ rằng một số đề án của một chức năng/tài sản trong 'tôi' là con đường để đi. –
nếu xử lý() là trong I, và cả A và B thực hiện tôi, nhưng nó không có ý nghĩa để có handler() trên cả hai, tôi nghĩ rằng có ** có lẽ ** vấn đề khác. – Carl