2015-02-18 19 views
6

tôi có chương trình Java sau đó tôi đã hy vọng không biên dịch, nhưng nó đã làm:Tại sao không phải là lỗi khi gọi phương thức không tham số với các đối số kiểu?

class Test { 
    public static void f() { 
    } 

    void m() { 
      Test.<String>f(); 
    } 
} 

Tại sao javac cho phép gọi một phương pháp phi tham số theo cách này?

Phiên bản trình biên dịch Java của tôi là: javac 1.7.0_75

+2

Bạn đang sử dụng phiên bản JDK nào? Nó không biên dịch cho tôi (JDK 1.5 and1.6) – Albert

+0

@Albert Ồ, tôi đang sử dụng Java 7. Tôi sẽ chỉnh sửa mô tả bằng phiên bản JDK của tôi. – user11171

+0

Từ nơi bạn có công cụ này ⁿ | ⁿ –

Trả lời

5

Tham số loại rõ ràng chỉ bị bỏ qua.

Điều này được nêu trong JLS, Section 15.12.2.1:

  • Nếu phương pháp gọi trình bao gồm lập luận kiểu tường minh, và các thành viên là một phương pháp chung chung, sau đó số lượng các đối số loại bằng đến số lượng các tham số kiểu của phương thức.

Điều khoản này ngụ ý rằng phương pháp không chung chung có thể có khả năng là áp dụng cho yêu cầu cung cấp đối số loại rõ ràng. Thật vậy, nó có thể bật ra được áp dụng. Trong trường hợp này, loại đối số sẽ bị bỏ qua.

Các vấn đề liên quan