2013-05-01 35 views
14

Bạn có thể vui lòng giúp tôi với mã dưới đây không. Lỗi này là: "Không thể sử dụng này trong một bối cảnh tĩnh"điều này: Không thể sử dụng điều này trong ngữ cảnh tĩnh

public class Sample2 { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) 
    { 
     Sample2 sam=new Sample2(); 

     //Below code works fine 
     System.out.println(sam); 

     //Below code is displaying error 
     System.out.println(this); 
    } 
} 
+0

có thể trùng lặp của [biến không tĩnh không thể được tham chiếu từ ngữ cảnh tĩnh] (http://stackoverflow.com/questions/2559527/non-static-variable-cannot-be-referenced-from-a-static- ngữ cảnh) –

+0

bản sao có thể có của [tại sao chúng ta không thể sử dụng từ khoá này trong một phương pháp tĩnh] (http://stackoverflow.com/questions/11664522/why-cant-we-use-this-keyword-in-a-static -method) – fglez

+0

Điều này có thể giúp - http://www.buggybread.com/2014/06/error-cannot-use-this-in-static-context.html –

Trả lời

21

Xem, từ khóa "này" đề cập đến đối tượng hiện tại do đó phương pháp đang được exceution. Như, bạn không thể gọi phương thức tĩnh bằng cách sử dụng thể hiện của lớp. Đó là lý do tại sao, "điều này" không thể được sử dụng trong ví dụ trên trong một phương pháp tĩnh vì nó đang cố gắng để in dụ hiện tại mà không phải là ở tất cả tạo ra. Vì vậy, tôi nghĩ rằng đó là lý do tại sao có một lỗi thời gian biên dịch mà bạn đang nhận được.

+2

Thực ra bạn có thể gọi một phương thức tĩnh bằng cách sử dụng một đối tượng của lớp mà phương thức tĩnh đã được khai báo. Chúng tôi không làm điều này vì nó là một cách rất xấu để gọi/sử dụng một phương pháp tĩnh. :) –

+0

và tôi cũng đã thử cho MainActivity.this – Prasad

0

Trong java bạn không thể sử dụng trong phương pháp tĩnh (bối cảnh tĩnh).

Static phương pháp không trỏ đến bất kỳ trường hợp nào của lớp kèm theo.

Một phương pháp tĩnh không thể tham khảo “này” hoặc từ khóa “siêu” trong anyway

Tham khảo official docs trên từ khóa này

+0

Phương pháp không tĩnh không 'trỏ tới' các trường hợp hoặc. – EJP

15

Họ từ khóa this đề cập đến dụ của lớp học. Trong một bối cảnh tĩnh, bạn không có cá thể, do đó bạn không thể tham chiếu nó.

Để biết thêm thông tin, hãy tham khảo câu trả lời này: What is the meaning of "this" in Java?

+0

oh được rồi. Tôi cho rằng tham chiếu đối tượng của 'sam' sẽ có sẵn trong 'this'. từ câu trả lời dưới đây, rõ ràng là từ khóa "này" đề cập đến đối tượng hiện tại do phương thức nào đang được thực thi " – Cyborgz

1

Nếu chúng tôi cố gắng truy cập điều này từ ngữ cảnh tĩnh, trình biên dịch hiện có cách để đoán ví dụ nào, bạn đang tham chiếu quá. chính là một phương pháp tĩnh ở đây.

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