Используя ключевое слово “это” в Java [дубликат]

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

Либо распакуйте его в цикле:

for comp, in cursor:

, либо просто ссылайтесь на элемент непосредственно при печати:

print(comp[0])

Обратите внимание: в скобках нет необходимости в инструкции for, даже при распаковке.

19
задан Matt Briggs 23 February 2009 в 13:27
поделиться

9 ответов

this ключевое слово является ссылкой на текущий объект.

class Foo
{
    private int bar;

    public Foo(int bar)
    {
        // the "this" keyword allows you to specify that
        // you mean "this type" and reference the members
        // of this type - in this instance it is allowing
        // you to disambiguate between the private member
        // "bar" and the parameter "bar" passed into the
        // constructor
        this.bar = bar;
    }
}

Другой способ думать об этом состоит в том, что this ключевое слово похоже на персональное местоимение, которое Вы используете для ссылки на себя. Другие языки имеют различные слова для того же понятия. Использование VB Me и конвенция Python (поскольку Python не использует ключевое слово, просто неявный параметр к каждому методу) должно использовать self.

, Если необходимо было сослаться на объекты, которые являются внутренне Вашими, Вы сказали бы что-то вроде этого:

Мой рука или мой участок

Думают this как просто путь к типу для высказывания "моего". Таким образом, psuedocode представление было бы похоже на это:

class Foo
{
    private int bar;

    public Foo(int bar)
    {
        my.bar = bar;
    }
}
38
ответ дан 30 November 2019 в 01:54
поделиться

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

Это может использоваться в качестве ссылки на объект, которая относится к экземпляру, к существующему методу обратились: return this;

Это может использоваться в качестве ссылки на объект, которая относится к экземпляру, который текущий конструктор создает, например, получить доступ к скрытым полям:

MyClass(String name)
{
    this.name = name;
}

Это может использоваться для вызова другого конструктора класс из конструктора:

MyClass()
{
    this("default name");
}

Это может привыкнуть к экземплярам включения доступа из вложенного класса:

public class MyClass
{
    String name;

    public class MyClass
    {
        String name;

        public String getOuterName()
        {
            return MyClass.this.name;
        }
    }
}
21
ответ дан 30 November 2019 в 01:54
поделиться

ключевое слово this является ссылкой на текущий объект . Это лучше всего объяснено со следующей частью кода:

public class MyClass {

    public void testingThis() 
    {
        // You can access the stuff below by 
        // using this (although this is not mandatory)

        System.out.println(this.myInt);
        System.out.println(this.myStringMethod());

        // Will print out:
        // 100
        // Hello World
    }

    int myInt = 100;
    string myStringMethod() 
    {
        return "Hello World";
    }

}

Это не использовало много, если у Вас нет стандарта кода в Вашем месте, говоря Вам использовать this ключевое слово. Существует одно общее использование для него, и это - то, если Вы следуете конвенции кода, где у Вас есть названия параметра, которые совпадают с Вашими атрибутами класса:

public class ProperExample {
    private int numberOfExamples;

    public ProperExample(int numberOfExamples) 
    {
        this.numberOfExamples = numberOfExamples;
    }
}

Одно надлежащее использование этого ключевого слова должно объединить конструкторов в цепочку (делающий создающий объект, последовательный всюду по конструкторам):

public class Square {
    public Square() 
    {
        this(0, 0);
    }

    public Square(int x_and_y) 
    {
        this(x_and_y, x_and_y);
    }

    public Square(int x, int y)
    {
       // finally do something with x and y
    }
}

Это ключевое слово работает тот же путь в, например, C#.

6
ответ дан 30 November 2019 в 01:54
поделиться

"это" - ссылка на текущий объект.

Посмотрите детали здесь

6
ответ дан 30 November 2019 в 01:54
поделиться

Еще лучшее использование этого

public class Blah implements Foo {

   public Foo getFoo() {
      return this;
   }
}

Это позволяет Вам конкретно "этому" объекту в текущем контексте. Другой пример:

public class Blah {

   public void process(Foo foo) { 
      foo.setBar(this);
   }
}

, Как еще мог Вы делать эти операции.

4
ответ дан 30 November 2019 в 01:54
поделиться

Ключевое слово' это ' относится к контексту текущего объекта. Во многих случаях (как Andrew указывает), Вы будете использовать явное это , чтобы прояснить, что Вы обращаетесь к текущему объекту.

кроме того, от' это и супер ':

*There являются другим использованием для этого. Иногда, когда Вы пишете метод экземпляра, необходимо передать объект, который содержит метод к подпрограмме как фактический параметр. В этом случае можно использовать это в качестве фактического параметра. Например, если бы Вы хотели распечатать строковое представление объекта, то Вы могли бы сказать "System.out.println (это)";. или Вы могли присвоить значение этого к другой переменной в операторе присваивания.

На самом деле, можно сделать что-либо с этим, что Вы могли сделать с любой другой переменной, кроме изменения ее значение.*

, Что сайт также относится к связанному понятию' супер ', который может оказаться полезным в понимании, как они работают с наследованием.

1
ответ дан 30 November 2019 в 01:54
поделиться

Это - ссылка фактического экземпляра класса в методе того же класса. кодируя

public class A{
    int attr=10;

    public int calc(){
     return this.getA()+10;
   }
   /**
   *get and set
   **/    

}//end class A

В calc () тело, программное обеспечение выполняет метод в объекте, выделяемом в настоящее время.

, Как возможно, что поведение объекта видит себя? С это ключевое слово, точно.

Действительно, этот ключевое слово не требует обязательного использования (как [1 110] супер ), потому что JVM знает, где называют метод в область памяти, но по-моему это делает код более readeable.

1
ответ дан 30 November 2019 в 01:54
поделиться

Это может быть также способ получить доступ к информации о текущем контексте. Например:

public class OuterClass
{
  public static void main(String[] args)
  {
    OuterClass oc = new OuterClass();
  }

  OuterClass()
  {
    InnerClass ic = new InnerClass(this);
  }

  class InnerClass
  {
    InnerClass(OuterClass oc)
    {
      System.out.println("Enclosing class: " + oc + " / " + oc.getClass());
      System.out.println("This class: " + this + " / " + this.getClass());
      System.out.println("Parent of this class: " + this.getClass().getEnclosingClass());
      System.out.println("Other way to parent: " + OuterClass.this);
    }
  }
}
1
ответ дан 30 November 2019 в 01:54
поделиться

Думайте о нем с точки зрения английского языка, "этот объект" является объектом, который Вы в настоящее время имеете.

WindowMaker foo = new WindowMaker(this);

, Например, Вы в настоящее время в классе, который расширяется от JFrame, и Вы хотите передать ссылку на объект WindowMaker для JFrame, таким образом, это может взаимодействовать с JFrame. Можно передать ссылку на JFrame путем передачи его ссылки на объект, который называют "этим".

0
ответ дан 30 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: