SWT.CLOSE
и SWT.RESIZE
являются int-флагами. |
означает Binary OR
между ними, что означает пропускать их обоих.
Например. если RESIZE = 1 (00000001 binary)
и CLOSE = 2 (00000010 binary)
, SWT.CLOSE | SWT.RESIZE = 3 (00000011 binary)
и позже вызванный метод будет знать, как перехватить их обоих.
Редактировать - что дальше
Если конструктор ведет себя в соответствии с флагами, он может выглядеть следующим образом:
public Shell(Display d, int flags)
{
if ((flags & SWT.CLOSE) > 0)//the close flag is on
{ /*do some stuff*/ };
if ((flags & SWT.RESIZE) > 0)
{ /*do some stuff to enable resize..*/ };
}
Теперь, вместо того, чтобы передавать много ненужных аргументов конструктору, мы сообщаем ему с одним аргументом (флажками), что нужно сделать. Например, первый if
проверяет, установлен ли флаг ЗАКРЫТЬ во флаги: flags = 3 (00000011 binary)
(как мы его установили ранее) SWT.CLOSE = 2 (00000010 binary)
и flags & SWT.CLOSE = 3 & 2 = 00000010 binary
, который больше нуля и установлен.