因为在Java中,泛型通常在幕后操作Object
,所以我很好奇嵌入这样的值是否会比放置一个已经存在的对象产生更多的开销.
考虑一下可以包含任意元信息的Map<String, Object>
.您想要在那里放置一个类似于标记的条目-如果它存在,则该标记被启用.
所以你有这样的东西:
static final String MY_FLAG_NAME = "name";
Map<String, Object> myMap;
现在我想知道这三种设置单位的实现是否有区别:
-
myMap.put(MY_FLAG_NAME, true)
(false
表示禁用) -
myMap.put(MY_FLAG_NAME, null)
(我们可以使用containsKey
,但在我看来这看起来很脏) -
myMap.put(MY_FLAG_NAME, MY_FLAG_NAME)
(字符串已经分配,可以用""
表示禁用)
我这里的问题是,这是否会在某个时候迫使引擎盖下某种形式的new Boolean()
,或者如果我把一个字符串或布尔值都无关紧要.我从来没有真正理解过Java如何准确地处理泛型中boolean
/Boolean
的差异,其他原语类型也是如此.
这段代码会被多次调用,但我没有足够的Java知识来进行可靠的性能测试.