This: Невозможно использовать это в статическом контексте

Не могли бы вы помочь мне с кодом ниже. Ошибка: "Нельзя использовать это в статическом контексте"

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);
    }
}

Ответ 1

Смотрите, "this" ключевое слово относится к текущему объекту, из-за которого метод находится под контролем. Как, вы не можете вызвать статический метод, используя экземпляр класса. Вот почему "this" не может использоваться в приведенном выше примере в статическом методе, поскольку он пытается распечатать текущий экземпляр, который вообще не создан. Итак, я думаю, именно поэтому возникает ошибка времени компиляции, которую вы получаете.

Ответ 2

Ключевое слово this относится к экземпляру класса. В статическом контексте у вас нет экземпляра, поэтому вы не можете ссылаться на него.

Для получения дополнительной информации см. этот ответ: В чем смысл "his" в Java?

Ответ 3

Если мы попытаемся получить доступ к этому из статического контекста, компилятор теперь может угадать, к какому экземпляру вы тоже обращаетесь. main - это статический метод.

Ответ 4

В java вы не можете использовать это в статических методах (статический контекст).

Static методы не указывают на какой-либо экземпляр окружающего класса.

Статический метод не может ссылаться на "this" или "супер" ключевые слова в любом случае

Обратитесь официальные документы в ключевое слово