Использование Java это ключевое слово - PullRequest
7 голосов
/ 20 ноября 2010

В конструкторе класса я пытаюсь использовать:

if(theObject != null)
    this = theObject; 

Я ищу в базе данных и, если запись существует, я использую theObject, сгенерированный Hibernate Query.

Почемуя не могу использовать this?

Ответы [ 5 ]

17 голосов
/ 20 ноября 2010

Это потому, что 'this' не является переменной. Это относится к текущей ссылке. Если бы вам было разрешено переназначить «это», оно больше не осталось бы «этим», оно стало бы «этим». Вы не можете сделать это.

5 голосов
/ 20 ноября 2010

this не переменная, а значение.Вы не можете иметь this в качестве lvalue в выражении.

3 голосов
/ 20 ноября 2010

Поскольку вы не можете присвоить this.

this представляет текущий экземпляр объекта, то есть себя.Вы можете рассматривать this как неизменную ссылку на экземпляр объекта, код которого в данный момент выполняется.

1 голос
/ 28 ноября 2012

это ключевое слово содержит ссылку на текущий объект. Давайте рассмотрим пример, чтобы понять его.

class ThisKeywordExample
{
    int a;
    int b;
    public static void main(String[] args)
    {
        ThisKeywordExample tke=new ThisKeywordExample();
        System.out.println(tke.add(10,20));
    }
    int add(int x,int y)
    {
        a=x;
        b=y;
        return a+b;
    }
}

В вышеприведенном примере есть имя класса ThisKeywordExample, которое состоит из двух экземпляров данных a и b. есть метод add, который сначала устанавливает число в a и b, а затем возвращает сложение.

Элементы данных экземпляра занимают память, когда мы создаем объект этого класса, и принимаются переменной refrence в что мы держим ссылку на этот объект. В приведенном выше примере мы создали объект класса в методе main и удерживаем ссылка этого объекта в переменную tke refrence. когда мы вызываем метод add, как a и b доступны в методе add потому что метод add не имеет ссылки на объект. Ответ на этот вопрос проясняет понятие этого ключевого слова

вышеуказанный код обрабатывается JVM как

    class ThisKeywordExample
{
    int a;
    int b;
    public static void main(String[] args)
    {
        ThisKeywordExample tke=new ThisKeywordExample();
        System.out.println(tke.add(10,20,tke));
    }
    int add(int x,int y,ThisKeywordExample this)
    {
        this.a=x;
        this.b=y;
        return this.a+this.b;
    }
}

вышеупомянутые изменения вносятся JVM, поэтому он автоматически передает в метод еще один параметр (указатель объекта) и удерживайте его в переменной refrence this и получите доступ к члену экземпляра этого объекта и сгенерируйте эту переменную.

Вышеуказанные изменения вносятся JVM, если вы скомпилируете код, тогда возникает ошибка компиляции, потому что в этом ничего не нужно делать. Все это обрабатывается JVM.

1 голос
/ 20 ноября 2010

«this» относится к экземпляру объекта, из которого вызывается ваш метод.

...