2010-01-25 4 views
10

thể trùng lặp:
Why does Eclipse complain about @Override on interface methods?Tôi có thể nhận Java 5 để bỏ qua lỗi @Override không?

Tôi có một số mã Java được viết bằng Eclipse và Java 6 SDK, vì vậy phương pháp mà thực hiện một giao diện được chú thích với @Override - chú thích rằng là hợp pháp trong Java 6, nhưng không phải trong Java 5.

Tôi muốn biên dịch cùng một mã bằng cách sử dụng SDK Java 5 (javac trên Mac OS X 10.5). Mọi thứ biên dịch và chạy tốt ngoại trừ chú thích @Override. Có cách nào tôi có thể nhận được javac để bỏ qua các chú thích @Override cho dự án này, hoặc là giải pháp duy nhất để loại bỏ tất cả?

Trả lời

4

Rõ ràng bạn có thể nâng cấp lên Java 1.5 U21 và điều này sẽ khắc phục vấn đề:

Why is javac failing on @Override annotation

+0

Tôi đọc câu hỏi đó và tất cả câu trả lời của nó, và nó không được xác nhận cho JDK 1.5u21 và 1.5u22, xem http://stackoverflow.com/questions/2335655/why-is-javac-failing-on-override-annotation # comment3379487_2335752 –

6

Thật không may, cách duy nhất là thực sự xóa chú thích.

Nếu bạn muốn mã biên dịch và chạy với Java 5, bạn nên phát triển nhắm mục tiêu Java 5. Nếu không, bạn có thể vô tình dựa vào một phương pháp SDK Java 6 cụ thể và như vậy.

+0

Người ta có thể dễ dàng loại bỏ chúng thông qua một bước chế biến sẵn tuy nhiên. –

-1

@ Override là hợp lệ trong java 5 ->http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/Override.html

tôi khuyên bạn nên kiểm tra các thiết lập trình biên dịch của dự án của bạn trong Eclipse, có lẽ tại dự án -> Compiler -> Lỗi/Warnings -> Chú thích?

+0

+1 - Tôi sẽ nói điều tương tự. Tôi cũng sử dụng @Override và tôi vẫn còn trên jdk 1.5. – PSpeed

+8

@ Ngữ nghĩa của Override đã thay đổi giữa Java 5 và 6 - trong 5, nó gây ra lỗi trình biên dịch khi được sử dụng trên phương thức thực hiện một giao diện. Trong 6, nó gây ra một cảnh báo khi * không * được sử dụng trên phương thức như vậy. Câu hỏi đặt ra là làm thế nào để đối phó với sự khác biệt này. –

+0

Có @Override hợp lệ trong Java 5. Nhưng đặc tả đã thay đổi đối với Java6. Trong Java6, bạn có thể biết các phương thức chú thích thực hiện các phương thức của một giao diện. Điều này là không thể trong Java6. –

-1

Java 6 khả dụng cho OS X. Kiểm tra cập nhật phần mềm. Khi bạn có nó, đặt nó là phiên bản java mặc định, và sau đó biên dịch.

+0

Đó thực sự không phải là giải pháp khi anh ta muốn nhắm mục tiêu Java 5. –

+0

Bạn trả lời câu hỏi của OP. – akuhn

2

Bạn có thể sử dụng JDK6 để biên dịch mã 1.5. Sử dụng -bootclasspath, -target-source. Ngoài ra, tôi tin rằng trình biên dịch Eclipse xử lý @Override giống nhau (điều này có thể sai!).

1.5 đã kết thúc giai đoạn End of Service Life và tôi khuyên bạn nên để nó bị hỏng.

+0

+1 Để đề xuất mục tiêu và -source.Sẽ là thú vị để xem nếu điều này hoạt động. –

+0

Công việc này có hiệu quả không? ^^ – akuhn