代码之家  ›  专栏  ›  技术社区  ›  Todd O'Bryan

.eq引起警告。我该如何摆脱它?

  •  2
  • Todd O'Bryan  · 技术社区  · 12 年前

    我将JDO与Scala中的DataNucleus类型安全查询语言一起使用。因此,我有这样的代码:

    val id: Long = // something
    val cand: QDbObject = QDbObject.candidate()
    pm.query[DbObject].filter(cand.id.eq(id))...
    

    简而言之,这将为所有 DbObject 谁的 id 字段等于 身份证件 。很遗憾,我收到以下警告:

    NumericExpression[Long] and Long are unrelated: they will most likely 
    never compare equal
    

    显然,Scala编译器认为 NumericExpression[Long] 正在使用的内置定义 eq() ,类似于 == ,但由于这来自Java 方程式() 方法与Scala的 方程式() 方法

    有什么办法可以摆脱警告吗?显然,这种情况会经常发生,我担心这些非警告会掩盖真正的警告。

    使现代化 (2013-06-29)

    这在Scala 2.10.2中得到了修复。警告已经消失了。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Daniel C. Sobral    12 年前

    我更关心的是 eq 方法,而不是Scala的 当量 ! 但事实确实如此。不过,我认为你无法摆脱它。如果您使用的是Scala 2.10,那么您可以使用不同的方法调用来创建一个隐式值类 当量 --这实际上是一样的,但警告将仅限于一个文件。