我学习反思,我发现了一些片段,看起来像这样:表达式“m | = Modifier.PUBLIC”是什么意思,以及为什么要这样做?
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
?
这是一个[按位或](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html),它用于组合多个值。但在这种情况下,每个结果都在一个单独的'else'中,因此您可以按照您的建议在技术上对其进行修改。我真的有点惊讶地看到[官方教程]中的代码(https://docs.oracle.com/javase/tutorial/reflect/member/fieldModifiers.html)。 – shmosel
'| ='是一个复合赋值运算符,结合了'='(赋值)和'|'(按位或)。 – Andreas