enums - How does one "override" an inner class in Scala? -


in scaladoc of class enumeration#val, can read: "a class implementing value type. class can overridden change enumeration's naming , integer identification behaviour." puzzled: how override class? things override class val extends super.val not permitted.

there no virtual classes in scala (yet), can't write override class val ..., , sure invoking new val dynamically choose right class new instance. happen instead class chosen based on type of reference instance of enclosing class (in case, enumeration).

the general trick emulate virtual classes write class val extends super.val, , override protected method serves factory instances of class. in case, have override method:

protected def value(i: int, name: string): value = new val(i, name) 

enumeration create instances of val using factory method. in general, pattern requires discipline on programmer's part, can ensured declaring constructors private, forcing programmer use factory method.


Comments

Popular posts from this blog

Add email recipient to all new Trac tickets -

400 Bad Request on Apache/PHP AddHandler wrapper -

php - Change action and image src url's with jQuery -