Scala object that extends Java class -
Scala object that extends Java class -
an old trick used in previous java projects create e.g. fileutils
class offered helper functions mutual file operations needed project , not covered e.g. org.apache.commons.io.fileutils
. hence custom fileutils
extend org.apache.commons.io.fileutils
, offer functions well.
now seek same in scala apache helper functions not seen through fileutils
scala object, wrong here?
import org.apache.commons.io.{ fileutils => apachefileutils } object fileutils extends apachefileutils { // ... additional helper methods } val content = fileutils.readfiletostring(new file("/tmp/whatever.txt"))
here compiler complains readfiletostring
not fellow member of scala fileutils
of apachefileutils
, extend ...
the scala equivalent of class static methods object, in scala terms, static components of fileutils
seen
object fileutils { def readfile(s:string) = ??? ... }
and in scala, can't extend object. illegal:
object object b extends // not type
therefore object fileutils extends apachefileutils
gives access class-level definitions of apachefileutils (that except base of operations object
methods equals
, hashcode
, have none)
you might find scala offers more elegant ways of providing extensions. have @ 'pimp library' pattern starting point.
to apply pattern example:
// definition of "pimped" methods import java.io.file class richfile(file:file) { def readtostring():string = ??? } // companion object defines implicit conversion object richfile { implicit def filetorichfile(f:file):richfile = new richfile(f) }
// usage
import richfile._ val content = new file("/tmp/whatever.txt").readtostring
scala
Comments
Post a Comment