【发布时间】:2016-09-11 02:48:17
【问题描述】:
我正在学习反射,我发现了一些看起来像这样的 sn-p:
private static int modifierFromString(String s) {
int m = 0x0;
if ("public".equals(s)) m |= Modifier.PUBLIC;
else if ("protected".equals(s)) m |= Modifier.PROTECTED;
else if ("private".equals(s)) m |= Modifier.PRIVATE;
else if ("static".equals(s)) m |= Modifier.STATIC;
else if ("final".equals(s)) m |= Modifier.FINAL;
else if ("transient".equals(s)) m |= Modifier.TRANSIENT;
else if ("volatile".equals(s)) m |= Modifier.VOLATILE;
return m;
}
我很困惑,m |= Modifier.PUBLIC 是什么意思,我可以使用m = Modifier.PUBLIC 吗?
【问题讨论】:
-
是bitwise or,用于组合多个值。但在这种情况下,每个结果都在一个单独的
else中,因此您可以按照您的建议在技术上对其进行修改。从official tutorial 看到这样的代码,我真的有点惊讶。 -
|=是一个复合赋值运算符,结合了=(赋值)和|(按位或)。
标签: java optimization reflection syntax