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" или "супер" ключевые слова в любом случае
Обратитесь официальные документы в ключевое слово