[问题] java 转 groovy 一问

楼主: cyclone350 (老子我最神)   2014-10-22 19:52:42
目前 groovy 新手,语法也不熟
在练习遇到一个问题
通常 java override equals 会这样
class MyClass {
private String field1;
private String field2;
// ... getter && setter
@Override
public boolean equals(Object obj) {
if(obj == null) return false;
if(obj == this) return true;
if(obj.getClass() != this.getClass()) return false;
MyClass mc = (MyClass) obj;
return field1.equals(mc.getField1()) && field2.equals(mc.getField2());
}
}
若改成 groovy, == 会被转成 equals,所以会无限循环。
目前知道 if(obj == null) 可以改成 if(obj)
但是 if(obj == this) 要怎么改?
groovy 有提供这种直接比较位址的方式吗?
作者: luoqr (.....)   2014-10-22 22:25:00
Object.is() ?
楼主: cyclone350 (老子我最神)   2014-10-22 22:38:00
看了 javadoc, 应该是is没错 感谢
作者: nOhiTmE   2014-10-22 22:46:00
都用groovy了,这种东西就别自己刻了吧!请参考: http://groovy.codehaus.org/gapi/groovy/transform/EqualsAndHashCode.html抱歉忘记缩网址: http://tinyurl.com/oy7mpay
楼主: cyclone350 (老子我最神)   2014-10-22 22:53:00
感谢提供,似乎跟lombok是做相同的事情!!
作者: nOhiTmE   2014-10-22 22:57:00
groovy不就是生下来简化java的吗 XD
作者: HuangJC (吹笛牧童)   2014-10-23 00:55:00
我还以为 groovy 可以生吞 java;所以等于又学另一种?当然有人会说'很像了',但我拿 java 去写 c++,也是很像了'很像了'之余,不一样就是不一样的地方,还是新语言无误.
作者: carylorrk (carylorrk)   2014-10-23 01:52:00
生吞 Java 的意思是?相容于 Java 的程式吗?JVM-based 的好处本来就不是跟 Java 语法相容...而且事实上是新语言无误啊,又不像是 TypeScript 之流~主要是对 Java-er 友善、而且可以方便和 Java 做结合的dynamic language
作者: HuangJC (吹笛牧童)   2014-10-23 02:05:00
我有 po 一篇文,想以 java 写批次档,结果有人提 groovy当时还以为它可以生吞 java 所有档...
作者: carylorrk (carylorrk)   2014-10-23 02:26:00
我有看到~如果有一种语言这么万用,世界上就不会有这么多语言啦!不过对 Jave developer 来说 Groovy 的确是script language 的好选择
作者: swpoker (swpoker)   2014-10-23 08:58:00
感觉jvm要改名为可运行java的vm阿
作者: qrtt1 (有些事,有时候。。。)   2014-10-23 14:43:00
@HuangJC 如果你把它编译好的话,是可以吞啊。
作者: HuangJC (吹笛牧童)   2014-10-23 16:12:00
我是说,不用我再花心力;我可以接受 Groovy 有更多语法但如果我不想学,只想用,它至少要可以生吞 java 全部不用花心力改写..
作者: luoqr (.....)   2014-10-24 20:27:00
说生吞不如说它本身就是一个Java class顺便帮你执行script!
作者: HuangJC (吹笛牧童)   2014-10-25 00:00:00
写 script 时,我想拥有的优点是'不用等 compile time'不知时代是不是变了,因为现在 script 有更多特性是compiler 没有的;而 compile time 也渐渐少了(背景执行所以 qrtt1 说'把它编译好的话'那我不能接受;我以为我马上写 java 语法,它马上接受,因为它是 script..但假如我观念太旧了,你们说 script 注重的优点不是这个那我就改改囉;举例来说,我们知道 dir 是一道指令$a=di, $b=r, 取其值 %a%%b% 可以取出 dir 三字于是 %a%%b% 就可以引起 dir 的执行;这我当初和同学聊他还不信,一试出来后他就喷汁了 XD;这种 script 特性超强但也让我 debug 时很辛苦,全域搜寻无用,不知大家怎么学
楼主: cyclone350 (老子我最神)   2014-10-25 00:51:00
除了=之外还有什么是不吃Java语法的? 目前还没遇到
作者: luoqr (.....)   2014-10-25 00:54:00
java不能生吞java? :S
楼主: cyclone350 (老子我最神)   2014-10-25 00:56:00
to HuangJC,我的groovy就是拿来单纯验证'编译好'的class, 因为有时java doc不是那么完整或是我看不懂也懒得在写java file,所以就用groovy来用
作者: HuangJC (吹笛牧童)   2014-10-25 02:03:00
doc 不完整,试着跑一次就好,我懂;但你不用 jvm 跑?groovy(也许它就是内含 jvm?)另外包有多了什么好处?

Links booklink

Contact Us: admin [ a t ] ucptt.com