scala - 手动创建类型标签

标签 scala scala-reflect

我有一些带有类型标签的 Scala 代码,我需要为 Java 用户提供这些代码。我的问题归结为解决以下问题:

给定两个 Scala 类型标签,我如何手动为 Tuple2[ A , B ] 创建一个类型标签?

如果它有什么不同,我的具体情况会更简单一些: 我有一个 A 的类型标签,我需要为 Tuple2[ String , A ] 创建一个类型标签

最佳答案

类型标签通常用作隐式,因此隐式系统对它们非常熟悉。只需告诉 Scala 你想要什么类型,然后隐式地请求它。

def tupleTag[A : TypeTag, B: TypeTag]: TypeTag[Tuple2[A, B]] = implicitly

如果它可以被实例化,Scala 就会这样做。如果不能,则为编译器错误。在这种情况下,由于 AB 已经是具体的(因为它们有标签),Tuple2[A, B] 将始终是具体的

关于scala - 手动创建类型标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997764/

相关文章:

scala - 在 scala 2 或 3 中,是否可以在运行时调试隐式解析过程?

scala - Play Framework 2.12;作为生产的一部分运行 CLI 作业

java - 在 Eclipse 中从 Java 访问 Scala 实例变量

unit-testing - 单元测试 Scala Actor

scala - 通过字符串反射定义spark udf

scala - 如何在 Scala 宏中获取更高级类型参数的树

scala - 带有 tagless-final 的类型类依赖

scala - 在 EMR Notebooks 中添加外部 jar

scala - 如何使用 Scala 反射获取方法的返回类型字符串?