I have below code snippet
object SubClass extends MyTrait { private[this] val a = 10 def main(args: Array[String]) { println(a) } } trait MyTrait { protected val a = 5 }
And it gives the following runtime error. Can someone explain why we did not catch it at compile time.
Exception in the main thread java.lang.ClassFormatError: Duplicate field name & signature in the class file SubClass $ at java.lang.ClassLoader.defineClass1 (native method) with java.lang.ClassLoader.defineClassCond (ClassLoader.java:631) in java.lang.ClassLoader.defineClass (ClassLoader.java:615) in java.security.SecureClassLoader.defineClass (SecureClassLoader.java:141) on java.net.URLClassLoader.defineClass (URLClassLoader.java:283) in java.net.LC .access $ 000 (URLClassLoader.java:58) in java.net.URLClassLoader $ 1.run (URLClassLoader.java:197) in java.security.AccessController.doPrivileged (native method) in java.net.URLClassLoader.findClass (URLClassLoader.java : 190) in java.lang.ClassLoader.loadClass (ClassLoader.java.306) in sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.javahaps01) at java.lang.ClassLoader.loadClass (ClassLoader.java:247) in SubClass.main (TraitTest.scala)
source share