gpt4 book ai didi

groovy - 在 Groovy 中重载 == 以不返回 bool 值

转载 作者:行者123 更新时间:2023-12-01 12:28:38 25 4
gpt4 key购买 nike

我目前正在使用 Groovy 为用 Java 编写的与数学相关的 API 开发 DSL。

Expression 类有一个具有以下签名的方法:

public Constraint equals(Expression that)

我们想定义一个约束,它只会在以后被评估。

是否可以使用我们的equals 实现来覆盖==,这样它就不会返回boolean,而是返回Constraint?

最佳答案

不,据我所知,这是不可能的......

== 运算符在某些时候以 DefaultTypeTransformation.java::compareEqual 结束。它返回 boolean,所以即使你这样做:

class Yay {}

class Woo {
String equals(Yay y) {
'hello'
}
}

println new Woo() == new Yay()

你会得到异常:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.compareEqual(DefaultTypeTransformation.java:641)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.compareEqual(ScriptBytecodeAdapter.java:684)
at ConsoleScript3.run(ConsoleScript3:9)

它适用于 a.equals(b),但不适用于 a == b

关于groovy - 在 Groovy 中重载 == 以不返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com