Scala Library: scala.Proxy
scala.Proxy
trait Proxy extends AnyThis class implements a simple proxy that forwards all calls to the public,
non-final methods defined in class Any to another object self. Those methods
are:
def hashCode(): Int
def equals(other: Any): Boolean
def toString(): StringNote: forwarding methods in this way will most likely create an asymmetric equals method, which is not generally recommended.
- Source
- Version
- 1.0, 26/04/2004
Concrete Value Members From scala.Proxy
def equals(that: Any): Boolean
Compares the receiver object ( this ) with the argument object ( that ) for
equivalence.
Any implementation of this method should be an equivalence relation :
- It is reflexive: for any instance
xof typeAny,x.equals(x)should returntrue. - It is symmetric: for any instances
xandyof typeAny,x.equals(y)should returntrueif and only ify.equals(x)returnstrue. - It is transitive: for any instances
x,y, andzof typeAnyifx.equals(y)returnstrueandy.equals(z)returnstrue, thenx.equals(z)should returntrue.
If you override this method, you should verify that your implementation remains
an equivalence relation. Additionally, when overriding this method it is usually
necessary to override hashCode to ensure that objects which are “equal” (
o1.equals(o2) returns true ) hash to the same scala.Int. (
o1.hashCode.equals(o2.hashCode) ).
- that
- the object to compare against this object for equality.
- returns
trueif the receiver object is equivalent to the argument;falseotherwise.
- Definition Classes
- Proxy → Any (defined at scala.Proxy)
Full Source:
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2002-2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://www.scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala
/** This class implements a simple proxy that forwards all calls to
* the public, non-final methods defined in class `Any` to another
* object self. Those methods are:
* {{{
* def hashCode(): Int
* def equals(other: Any): Boolean
* def toString(): String
* }}}
* '''Note:''' forwarding methods in this way will most likely create
* an asymmetric equals method, which is not generally recommended.
*
* @author Matthias Zenger
* @version 1.0, 26/04/2004
*/
trait Proxy extends Any {
def self: Any
override def hashCode: Int = self.hashCode
override def equals(that: Any): Boolean = that match {
case null => false
case _ =>
val x = that.asInstanceOf[AnyRef]
(x eq this.asInstanceOf[AnyRef]) || (x eq self.asInstanceOf[AnyRef]) || (x equals self)
}
override def toString = "" + self
}
object Proxy {
/** A proxy which exposes the type it is proxying for via a type parameter.
*/
trait Typed[T] extends Any with Proxy {
def self: T
}
}Interested in Scala?
I send out weekly, personalized emails with articles and conference talks.
Subscribe now.