【问题标题】:Method in sealed trait gives Duplicate field name & signature in class file密封特征中的方法在类文件中给出重复的字段名称和签名
【发布时间】:2016-09-22 09:41:20
【问题描述】:

当我在IntList 上添加process() 时,它会给出运行时“Duplicate field name&signature in class file Cons$3...”。只有在函数内部定义了sealed trait 时才会发生这种情况。

scala>   def t4() = {
     |
     |     sealed trait IntList {
     |       def process (baseCase: Int, f: (Int, Int) => Int): Int =
     |         this match {
     |           case End => baseCase
     |           case Cons(hd, tl) => f( hd, tl.process(baseCase, f))
     |         }
     |
     |     }
     |
     |     final case object End extends IntList
     |
     |     final case class Cons ( hd: Int, tl: IntList) extends IntList
     |
     |     val l1: IntList = Cons(1, Cons(3, Cons(5, End)))
     | }
t4: ()Unit

scala> t4()
java.lang.ClassFormatError: Duplicate field name&signature in class file Cons$3
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
  at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileC
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at Cons$4$.apply(<console>:24)
  at .t4(<console>:26)
  ... 32 elided

【问题讨论】:

  • 对我来说似乎是一个错误。

标签: scala scala-compiler


【解决方案1】:

已证明是一个已知问题。在此处跟踪:https://issues.scala-lang.org/browse/SI-5252

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多