определение метода Java-конструкции - PullRequest
0 голосов
/ 30 августа 2011

Как это называется? Это конструктор из класса Bits из JBitTorrent API. Это совершенно верно:

public Bits and(Bits b){ /* something */ }

Но в имени метода есть пробел. Так как это называется? Я думал, что это "Java Multimethod", но это не так.

Ответы [ 6 ]

3 голосов
/ 30 августа 2011

Это не конструктор, и в имени метода нет пробела.

Метод называется and, он принимает в качестве аргумента объект Bits и возвращает объект Bits.

Это обычный метод, для которого нет конкретного имени (с точки зрения языка).

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

3 голосов
/ 30 августа 2011

Это не конструктор, это обычный метод Java.

Первый Bits - это тип возвращаемого значения, а and - имя метода.

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

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

1 голос
/ 30 августа 2011

Обычно используется в шаблоне Builder (например, StringBuilder ), где предоставляются поля / операции для создания полностью построенного объекта.

public Bits and(Bits b) {...} - это не конструктор, а метод, который требует Bits b для изменения состояния текущих внутренних битов (ANDed).

Реализация будет иметь такой эффект.

public Bits and(Bits b) {
    this.doAnd(b);

    //Now that our internal bits are ANDed with bits B, return our changed state
    return this;
}
1 голос
/ 30 августа 2011

В методе нет пробела, имя метода - "и".

  • public - модификатор
  • Bits - возвращаемое значение
  • and - название метода
  • Bits b - параметр b типа Bits
1 голос
/ 30 августа 2011

но в имени метода есть пробел

Нет, нет.Имя метода - «и».Bits это тип возврата!

1 голос
/ 30 августа 2011

Где, по вашему мнению, вы видите пробел в имени метода?

public Bits and(Bits b){ //something }

Это public метод с именем and, который возвращает объект Bits и который принимает Bits объект в качестве аргумента (с переменной аргумента с именем b).

Это не конструктор, а обычный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...