java - 在 Java 中访问 Scala 元组元素的正确方法是什么?
问题描述
Tuple
我注意到我可以通过使用字段(例如_1
)或方法(例如)从 Java 中的 Scala 访问元素_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()
确保安全。
推荐阅读
- node.js - 通过函数检查 Json 字段是否为 Null 或不存在
- javascript - 使提交按钮也发送一个额外的值
- reporting-services - TFS 构建服务器因 Reporting Services 项目而失败
- mysql - 无法从 Intellij 连接到在 docker 容器中运行的 mySql - “指定的数据库用户/密码组合被拒绝”
- php - 搜索到的词没有在我的数据库中正确注册
- vb.net - 如何在 VB.Net 2003 中创建按钮以打开另一个 apx.net 网页
- java - 数组中的所有元素转为小写 - toLowerCase() 方法
- javascript - 如何在javascript中获取动态生成的按钮的内部文本?
- javascript - Angular中的日期时间到整数
- spring - 将 spring session JDBC 与现有数据库一起使用(不是 springboot)