【发布时间】:2015-01-07 07:46:54
【问题描述】:
我被困在一件简单的事情上。我有一个名为“标签”的布尔数组。能够通过布尔值访问数组的每个元素对我来说很重要:
public boolean energetic, calming, happy, sad;
public boolean[] trackTags = {energetic, calming, happy, sad};
我传入并将布尔值分配给 trackTags 数组(假设为 [true, true, true, false]。因此,当我调用 trackTags[0] 时,我得到“true”。但是,当我打印“精力充沛”时 - 应该与 trackTags[0] 相同,该值始终为 false。我知道布尔值初始化为 false,但是当我在 trackTags 数组中切换某些值时对于“true”,命名元素不应该也改变吗?
第二个问题:我与布尔变量名称交互的好方法是什么?具体来说,如果我传入一个 String[] [happy, sad],然后只想切换我的 String 数组中名称对应的 boolean[] 值,这可行吗?我可以毫无问题地遍历两个数组的元素,但我显然无法将字符串与布尔值进行比较。
总而言之,有没有更好的方法来与布尔名称进行交互?我真的很困惑。
【问题讨论】:
-
使用
EnumSet可能吗? -
shouldn't the named elements change as well?不,他们不应该。boolean是一个原始的 java 类型。这意味着布尔变量不存储对布尔值的引用,而是值本身。当您这样做时:{energetic, calming, happy, sad}您将这四个布尔变量的值复制到数组中,但没有对它们的引用。所以,它们是不同的。如果您处理的是objects,而不是primitive type,那么引用不会丢失并且您的代码可以工作。