如何以编程方式确定该类是案例类还是简单类?

2024-01-18

如何以编程方式确定给定的类是案例类还是简单类?


使用新的 Scala 反射 API:

scala> class B(v: Int)
defined class B

scala> case class A(v: Int)
defined class A

scala> def isCaseClassOrWhat_?(v: Any): Boolean = {
     |   import reflect.runtime.universe._
     |   val typeMirror = runtimeMirror(v.getClass.getClassLoader)
     |   val instanceMirror = typeMirror.reflect(v)
     |   val symbol = instanceMirror.symbol
     |   symbol.isCaseClass
     | }
isCaseClassOrWhat_$qmark: (v: Any)Boolean

scala> class CaseClassWannabe extends Product with Serializable {
     |   def canEqual(that: Any): Boolean = ???
     |   def productArity: Int = ???
     |   def productElement(n: Int): Any = ???
     | }
defined class CaseClassWannabe

scala> isCaseClassOrWhat_?("abc")
res0: Boolean = false

scala> isCaseClassOrWhat_?(1)
res1: Boolean = false

scala> isCaseClassOrWhat_?(new B(123))
res2: Boolean = false

scala> isCaseClassOrWhat_?(A(321))
res3: Boolean = true

scala> isCaseClassOrWhat_?(new CaseClassWannabe)
res4: Boolean = false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式确定该类是案例类还是简单类? 的相关文章

  • Akka-Http 2.4.9 抛出 java.lang.NoClassDefFoundError: akka/actor/ActorRefFactory 异常

    我正在尝试使用 Akka http 构建一个简单的 Web 服务 我遵循了这个指南 http doc akka io docs akka 2 4 9 scala http low level server side api html htt
  • Spark scala 模拟 Spark.implicits 用于单元测试

    当尝试使用 Spark 和 Scala 简化单元测试时 我使用 scala test 和mockito scala 以及mockito Sugar 这只是让你做这样的事情 val sparkSessionMock mock SparkSes
  • 如何在 Scala 2.11 中查找封闭源文件的名称

    在编译时 如何在 scala 2 11 中检索当前源文件 编写代码的位置 的名称 这是一种实际有效的方法 val srcFile new Exception getStackTrace head getFileName println sr
  • Scala 和 Python 的通行证

    我想知道 是否有相当于 python 的 pass 表达式 这个想法是编写没有实现的方法签名 并编译它们只是为了对某些库原型的这些签名进行类型检查 我能够使用以下方法模拟这种行为 def pass A A throw new Excepti
  • PHP - 扩展 __construct

    我想知道你是否可以帮助我 我有两个类 一个扩展了另一个 B 类将由各种不同的对象扩展 并用于常见的数据库交互 现在我希望 B 类能够处理其连接和断开连接 而无需来自 A 类或任何外部输入的指示 据我了解 问题是扩展类不会自动运行其 cons
  • Scala 中的随机列表[重复]

    这个问题在这里已经有答案了 我对 scala 中的随机播放列表有疑问 使用scala util Random 例如我有 val a cyan val b magenta val c yellow val d key val color Ra
  • Spark:查找前 n 个值的高性能方法

    我有一个很大的数据集 我想找到具有 n 个最高值的行 id count id1 10 id2 15 id3 5 我能想到的唯一方法是使用row number没有分区就像 val window Window orderBy desc coun
  • C++中有没有办法让派生类重写基类静态方法?

    我有一个多次派生的基类 B D1 D2 等 在类 B 中 我希望有一个静态方法 getInfo 它返回一个 BaseInfo 类 基本上是一个包含类 B 的默认成员值的类 因此将其设为静态是有意义的 因为不需要特定的实例 现在 有没有办法强
  • 在 scala 宏中使用 LabelDef (2.10)

    我正在尝试 scala 2 10 宏功能 我使用时遇到问题LabelDef但在某些情况下 在某种程度上 我偷看了编译器的代码 阅读了摘录米格尔 加西亚的论文 http lampwww epfl ch magarcia但我还是卡住了 如果我的
  • 如何使用 Scala 从 Spark 更新 ORC Hive 表

    我想更新 orc 格式的 hive 表 我可以从 ambari hive 视图进行更新 但无法从 sacla spark shell 运行相同的更新语句 objHiveContext sql select from table name 能
  • 类方法作为 JavaScript 中的事件处理程序?

    JavaScript 中是否有最佳实践或通用方法将类成员作为事件处理程序 考虑以下简单示例
  • sbt 找不到启动器 jar:./bin/sbt-launch.jar

    我已经成功地使用 sbt 进行基本的 Scala 编译好几年了 但有一天它由于某种原因停止工作 我在自己的帐户中使用它 但我决定让我的系统管理员在我们的本地网络上安装最新版本 当我尝试运行它时 我得到 找不到启动器 jar bin sbt
  • 解决 sbt 中 jar 加载冲突的问题

    当两个特定的 sbt 插件启动时 我在 sbt 启动时收到以下错误加在一起到其构建定义中的项目 这些 sbt 插件之一是规模化jdbc https github com scalikejdbc scalikejdbc另一个是my own h
  • InvalidRequestException(为什么:empid 如果包含 Equal,则不能被多个关系限制)

    这是关于我从 Apache Spark 查询 Cassandra 时遇到的问题 Spark 的正常查询工作正常 没有任何问题 但是当我使用关键条件进行查询时 出现以下错误 最初 我尝试查询复合键列族 它也给出了与下面相同的问题 由以下原因引
  • 如何使方法通用而不出现“未找到匹配的形状”

    除了编写大量样板文件之外 我不知道如何克服这个 找不到匹配的形状 错误 要点中说明的基本思想是 我有一个非常基本的方法版本 有效 但非常具体 然后是一个采用mapper参数并且更通用 也可以工作 但特定于一种特定类型 然后是第三个版本 它采
  • 在 Scala 中提取案例类字段名称

    我有一个案例类 case class A field1 String field2 Int 我想在某些代码中引用确切的字符串 field1 例如 val q Query field1 gt hello performQuery q 现在我必
  • 如何将数据帧转换为 JSON 并使用密钥写入 kafka 主题

    我正在尝试以 JSON 格式向 kafka 写入一个数据帧 并在 Scala 中向该数据帧添加一个键 我目前正在使用 kafka spark 中的这个示例 df selectExpr CAST key AS STRING CAST valu
  • Scala 程序中三元运算符的用法[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有一个需要应用过滤器的对象数组 val filteredList list filter l gt pid true l Pro
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • Ruby/Rails - 如何创建类并从控制器访问它

    我一直在尝试使用一些不同的 gem 在 Rails 3 中显示谷歌地图 但遇到了一些问题 幸运的是我发现了这个https github com YouthTree bhm google maps https github com Youth

随机推荐

  • 构造函数不运行

    我不明白 因为当您创建 Users 类的对象时 不会打印包含构造函数的消息 class users public users private int i users users cout lt lt hello world int main
  • 如何判断一个节点是在内存中还是在 dom 中?

    在将节点附加到主页的 DOM 之前 我对节点进行了大量工作 我需要根据给定节点是否包含在主文档中来执行一些工作 我目前的方法是通过以下方式联系父母 if this el closest body length gt 0 有没有更合适的方法来
  • 类型错误:firebase.auth(...).onAuthStateChanged 不是函数

    我正在尝试使用 onAuthStateChanged 触发器 但在使用 firebase 部署 时收到 不是函数 执行时 firebase deploy 我收到以下错误 Error Error occurred while parsing
  • 如何使用 PHP/IIS 读取 Windows 登录用户名

    我正在运行一个网络 这里我有一个域控制器 DC 我刚刚在上面安装了 IIS6 PHP 和 Mysql 一切都很好 现在我想在这个本地网站上启动一个脚本 第一个问题是我想检测哪个网络用户 活动目录用户 使用PHP登录 我的意思是 当用户登录到
  • Git Flow 流程发送用于测试的功能,仅将特定功能部署到上线

    我们正在努力解决 Git Flow 流程 并将功能部署到我们的测试和实时环境 我们希望所有已准备好测试的功能都可以combined并部署到测试环境 我们只想部署具体特征到现场环境 我们使用 Git Flow 的方式存在的问题 开发人员 A
  • 如何在 JavaScript 中运行对象的 onEvent 方法?

    我刚刚开始使用 javascript 但我遗漏了一些我所知道的重要内容 我希望你能帮助我填补这个空白 因此 我尝试运行的脚本应该计算文本字段中的字符数 并更新一个段落以告诉用户他们输入了多少个字符 我有一个名为 charCounter 的对
  • R Plotly 叠加条形图

    简而言之问题 使用R和Plotly包 我可以创建一个覆盖条形图 其中使用 x 轴上的相同位置显示 2 个系列吗 经过相当多的谷歌搜索后 我找不到答案 例如这个可视化 使用 Plotly 和 R 创建分组 非重叠 堆叠条形图的代码 month
  • Horizo​​ntal Pod Autoscaler 中 API 版本 v2beta1 和 v2beta2 之间的区别?

    Kubernetes Horizo ntal Pod Autoscaler 演练https kubernetes io docs tasks run application horizo ntal pod autoscale walkthr
  • LINQ to SQL - 在保存之前格式化字符串?

    我正在尝试将现有 非 LINQ to SQL 类转换为 LINQ to SQL 实体类 该实体类具有现有 db 列 属性 例如 public string MyString get return myString set myString
  • 如何选择每个卷积层的滤波器数量? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 构建卷积神经网络时 如何确定每个卷积层使用的滤波器数量 我知道关于过滤器的数量没有硬性规定 但是根据您的经验 您读过的论文等 是否对所
  • 为什么 EAX 中的高 16 位不能通过名称访问(如 AX、AH 和 AL)? [复制]

    这个问题在这里已经有答案了 为什么没有一个特定的寄存器来访问寄存器的其他部分 16 32 Like ah or al访问8位部分ax登记 我们的想法是将寄存器扩展到 32 位 而不是创建具有两倍数量的 16 或 8 位寄存器的机器 因为这些
  • 动态设置ContentProvider的权限

    也许标题有点误导 我的问题是我有一个 Android 库项目 该项目在两个标准 Android 项目之间共享 一个用于应用程序的免费版本 另一个用于付费版本 该库当前拥有 ContentProvider 的代码 包括一个合约类 其中包含多个
  • 有没有办法从对象中删除未知事件侦听器?

    我想要一个可重用的按钮 可以为由外部源确定的许多不同回调之一注册 当设置新的回调时 我想删除旧的 我还希望能够随时从外部清除回调 public function registerButtonCallback function Functio
  • luceneMatchVersion“LUCENE_36”无效

    我正在尝试将 Solr 3 6 2 集成到我的项目中 我使用 Maven 和 Tomcat 来运行这些东西 当我使用 HttpSolrServer 时一切都很好 但是当我更改为 EmbeddedSolrServer 时 它会出现这样的错误
  • file:/// 到 http:// 通过 IFrame 进行通信

    也许你们中的一些人可能遇到了我遇到的同样的问题 假设您的计算机上有一个文件 file c test html 该文件中有一个 IFrame 您需要指示 IFrame 内容是否已加载 基本上 我们这里有 1 无法从 file 访问位置 hre
  • A:边缘焦点解决方法

    我目前正在使用伪选择器 focus within in chrome 但是根据caniuse com https caniuse com feat css focus within它在 Edge 和 IE 中不可用 我找到了一个巧妙的解决方
  • 亚马逊 DynamoDB 和 AngularJS

    因此 我创建了一个 AWS dynamoDB 表 数据库 并准备使用 AngularJS 获取该数据 我如何使用 AngularJS 做到这一点 我需要在亚马逊设置其他服务吗 或者我可以直接访问我的数据库吗 我无法直接找到与 DynamoD
  • SpringBoot 2.0.2.RELEASE 中的 BCryptPasswordEncoder 定义

    我有一个基本的 Spring Boot 应用程序 使用 Spring Initializr JPA 嵌入式 Tomcat Thymeleaf 模板引擎 并打包为可执行 JAR 文件 我定义了这个配置文件 Configuration Enab
  • 使用 glDrawArrays 绘制交错的 VBO

    我目前正在使用 glDrawElements 使用多个 VBO 顶点 颜色 纹理和索引 进行渲染 我发现很少有顶点是共享的 所以我想切换到 glDrawArrays 和单个交错的 VBO 我一直无法找到一个清晰的例子 1 创建一个交错的 V
  • 如何以编程方式确定该类是案例类还是简单类?

    如何以编程方式确定给定的类是案例类还是简单类 使用新的 Scala 反射 API scala gt class B v Int defined class B scala gt case class A v Int defined clas