Tôi có một phương pháp, trong một lớp được gọi là "PlaceParser" mà extends
"ModelParser":Java: Overriding hoặc Overloading method?
protected Place parseModel(JSONObject element) ...
Một Place là một lớp con của Mẫu. Chú thích @Override
có được thêm vào mã trên không? Vì phương thức có kiểu trả về khác nhau, điều này vẫn được tính là ghi đè phương thức lớp cơ sở có cùng tên và đối số/kiểu trả về có thay đổi 'chữ ký' không?
Phương pháp "ModelParser" trông như thế này "ModelT" cũng mở rộng "Model":
protected abstract ModelT parseModel(JSONObject element)
throws JSONException;
Cập nhật @ Jon Skeet: lớp
Các cơ sở được khai báo như thế này:
public abstract class ModelParser<ModelT extends Model> {
Tôi chưa thấy <ModelT extends Model>
kiểu khai báo cho một lớp trước.
Xem http://stackoverflow.com/questions/1882584/what-is-a-covariant-return-type. (Không * chính xác * trường hợp của bạn, bởi vì 'Place' không mở rộng' ModelT'.) –
@Eli: Tôi nghi ngờ rằng Place thực sự mở rộng ModelT, nếu không mã này sẽ không biên dịch. (Hoặc ModelT là một tham số kiểu chung ...) –
@Jon: Tôi đã cập nhật câu hỏi - tôi sẽ rất biết ơn nếu bạn có thể giải thích mối quan hệ giữa 'ModelT' và' Place'. – Mikaveli