2016-09-22 5 views
3

IntListprocess()을 추가하면 런타임에 "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 
+0

은 나에게 버그처럼 보입니다. – Samar

답변