Scala Library: scala.Proxy
scala.Proxy
trait Proxy extends Any
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.
- 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
x
of typeAny
,x.equals(x)
should returntrue
. - It is symmetric: for any instances
x
andy
of typeAny
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any instances
x
,y
, andz
of typeAny
ifx.equals(y)
returnstrue
andy.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
true
if the receiver object is equivalent to the argument;false
otherwise.
- 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.