如何在Groovy中动态调用关系运算符?(附Python实现示例)
在Groovy中动态调用关系运算符的方法
Groovy里的运算符本质都是对象的对应方法,因此可以通过动态方法调用实现类似Python的效果,以下是几种实用方式:
方式一:直接调用运算符对应的方法名
Groovy为每个关系运算符都定义了对应的方法名,比如:
>对应gt()<对应lt()>=对应ge()<=对应le()==对应equals()(Groovy中==默认等价于equals,若要判断引用相等用is())!=对应notEquals()
你可以通过字符串指定方法名,用invokeMethod动态调用:
def operatorName = 'gt' // 对应大于运算符 > def x = 1 def y = 2 // 动态调用方法 def result = x.invokeMethod(operatorName, y) println(result) // 输出: false
方式二:通过元类调用
所有Groovy对象都实现了GroovyObject接口,也可以借助元类完成动态调用:
def operatorName = 'lt' // 对应小于运算符 < def x = 5 def y = 3 def result = x.getMetaClass().invokeMethod(x, operatorName, [y]) println(result) // 输出: false
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

