在这种情况下,管道运算符的意思是“将SWT.APPLICATION_MODAL和SWT.OK都用作我的弹出框的选项/标志。” 这是非常常用的习惯用法,带有位域配置标识符,特别是。在SWT或Win32之类的窗口系统中。
管道( )运算符是按位或运算符,即,它计算两个二进制整数值的或运算。如果检查出定义了APPLICATION_MODAL和OK的位置,则会发现它们类似于以下内容:
...
SWT.OK = 1, // 00000001 in binary
SWT.ABORT_RETRY_IGNORE = 2, // 00000010 in binary
SWT.OK_CANCEL = 4; // 00000100 in binary
...
SWT.APPLICATION_MODAL = 32; // 00100000 in binary
... (and so on...)
当将这些数字中的两个(或多个)按位或时,将为每个选项设置单独的位:
int style = SWT.OK | SWT.APPLICATION_MODAL = 00000001 | 00100000 = 00100001
解释样式的窗口工具箱将能够通过按位执行AND来准确地告诉您您想要的内容(一个弹出框,该弹出框是Modal并具有一个OK按钮):
...
if(style & SWT.OK)
{
// we want an OK @R_740_2419@
}
if(style & SWT.ABORT_RETRY_IGNORE)
{
// we want an Abort/Retry/Ignore @R_740_2419@
}
if(style & SWT.OK_CANCEL)
{
// we want an OK/Cancel @R_740_2419@
}
...
if(style & SWT.APPLICATION_MODAL)
{
// We want a modal @R_740_2419@
}
...
以我的拙见,金达很聪明。它允许您在单个变量中选择/表示多个配置选项。诀窍在于选项的整数定义,并确保它们仅是2的幂。