java—从库函数返回装箱原语值的优点

yqkkidmi  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(328)

上下文

我正在研究几个javaredis客户机,比如莴苣和jedis。我看到两个库都定义了返回装箱基元类型而不是直接基元的方法。
例如, sadd() 退货 Long 而不仅仅是 long . https://lettuce.io/lettuce-4/release/api/com/lambdaworks/redis/api/sync/redissetcommands.html#sadd-k-v-

https://github.com/xetorthio/jedis/blob/d7aba13a8b65e66dedc01c51b73e3794cbe68a62/src/main/java/redis/clients/jedis/commands/binaryjediscommands.java#l139

问题

返回装箱原语的原因是什么?
据我所知,拳击增加了性能开销。
我的库使用redis库,保存和返回值并将其传播给库的用户有意义吗?
edit:没有一个方法返回 null ,因此将特殊含义编码为null不适用于它们。

flvtvl50

flvtvl501#

装箱原语可以在集合中使用,而常规原语不能(尽管它们仍然可以添加到相应装箱类型的集合中),并且还允许您使用引用而不是值,这在某些情况下(即当引用的大小小于数据的大小时)节省了时间和空间。但正如您所说,装箱原语会产生内存和性能开销的成本。

2uluyalo

2uluyalo2#

在我看来,主要原因是有能力检索 Object 而不是原语类型。e、 g.可以检索 null .
数字 Package 器,如 Integer , Long ... 缓存值是否介于 -128; +127 . 所有其他值将在内存中复制。而且要储存 Long 它占用的空间是商店的3倍多 long .
一般情况下,我遵循以下规则。如果你不需要回来 null 您应该更喜欢返回原语值而不是数字 Package 器。

相关问题