我注意到Tuple
我可以通过使用字段(例如_1
(或方法(例如_1()
(。出于任何原因(技术、佳能......
如果您分析标准库中Tuple2
的定义:
final case class Tuple2[@specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T1, @specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T2](_1: T1, _2: T2)
extends Product2[T1, T2]
如果您将此定义复制到您自己的MyTuple2
中并查看字节码,您确实会注意到_1
和_2
被声明为公共字段。但是,如果删除字段上的@specialized
注释,则该字段将变为私有字段,就像任何常规案例类一样。我找不到任何关于为什么会发生这种情况的信息,但它可能在 Scala 编译器文档中的深处。如果注释存在,则该字段将变为公共字段,即使该字段为空且未指定专用类型也是如此。
所以我会留下来,坚持使用_1()
的方法,_2()
安全。