Scala case class method: 'public scala.collection.Iterator<java.lang.String> productElementNa



如果我们了解由这种情况下的类编译生成的字节码


case class Person(name: String, age: Int)

除其他方法外,我们还得到了这种方法:


public scala.collection.Iterator<java.lang.String> productElementNames();

所以,问题是,它来自哪里,为什么不能在Person的实例上调用它,比如来自同一编译类的另一个实例

public scala.collection.Iterator<java.lang.Object> productIterator();

我使用以下版本:


$ scala -version                                                                                                                                                                                              
Scala code runner version 2.13.8 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.
$ scalac -version                                                                                                                                                                                             
Scala compiler version 2.13.8 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.

想法截图

已解决

感谢@DmytroMitin和@ElectronWill

是的,productElementNames()是从Product继承的方法。

它在Scala2.13.8中是绝对可调用的,使用它可以编译示例。

问题是,IDE认为它是Scala 2.12.4,而Product还没有包含该方法。

相关内容

  • 没有找到相关文章

最新更新