如果我们研究一下这种情况下类编译产生的字节码
case class Person(name: String, age: Int)
除了其他方法外,我们还得到了这个方法:
public scala.collection.Iterator<java.lang.String> productElementNames();
所以,问题是,它从哪里来,为什么不能在一个人的示例上调用它,比如来自同一编译类的另一个示例
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.
1条答案
按热度按时间relj7zay1#
已解决
感谢@DmytroMitin和@ElectronWill
是的,
productElementNames()
是从Product
继承的方法。在编译样例时使用的Scala 2.13.8中,它绝对是可调用的。
问题是,IDE认为它是Scala 2.12.4,其中
Product
还不包含该方法。