zoukankan      html  css  js  c++  java
  • Scala对象相等性判断

    在scala中,如何判断两个引用变量,是否相等的,是否指向同一个对象实例?

    1、首先,我们来看下scala的AnyRef类

    class AnyRef extends Any

    类AnyRef是所有引用类型的根类。

    具体参考:https://www.scala-lang.org/api/current/scala/AnyRef.html

    AnyRef的eq方法用于检查两个变量是否指向同一个对象实例
    AnyRef的equals方法默认调用eq方法实现,也就是说,默认情况下,判断两个变量相等,要求必须指向同一个对象实例

    2、

      1) 如果只是根据是否指向同一个实例,来判断变量是否相等,那么直接使用==操作符即可,默认先判断是否为null,不为null,然后调用equals方法

      2) 根据field重写equals()方法,那么通常的建议的是也需要根据相同的field重写hashCode()方法,如下

      

    class Apple(val name: String, val price: Double) {
    
        final override def equals(other: Any) = {
            val apple = other.asInstanceOf[Apple]
            if (apple == null) false
            else name == apple.name && price == apple.price
        }
    
        final override def hashCode = 13 * name.hashCode + 17 * price.hashCode
    
    }
  • 相关阅读:
    关于闭包的一些知识
    浏览器解析JavaScript原理(1)
    函数作用域及函数表达式
    jquery
    前端常用插件
    Git及GitHub
    angular框架
    express
    ES6基础
    Node.js相关总结
  • 原文地址:https://www.cnblogs.com/dreamfor123/p/9336051.html
Copyright © 2011-2022 走看看